我已经在@Controller类的函数上定义了两个方面。
一个是@Cacheble(Ehcache Spring annotation,它使用Spring AOP)。
另一个是围绕计算执行时间的建议。这是AspectJ Compile Time方面。
首次调用该方法时,正在执行这两个方面。但是,对于所有后续调用,只截获了@Cacheble方面。另一个建议(计算执行时间)没有被截获。为什么这不被截获? 我已经为这两个方面设置了@Order,但这没有帮助。
计算执行时间的第二个方面如下
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Order(value = 0)
public @interface MonitorPerformance {
}
Dispathcher-servlet.xml有
<ehcache:annotation-driven create-missing-caches="true"
cache-manager="ehCacheManager"
order="1"/>
期待您的建议。
感谢。
答案 0 :(得分:0)
对于要执行的方面,必须在从容器获取的实例上调用方法。是这样的吗?
答案 1 :(得分:0)
如果这是使用spring AOP编译时AspectJ然后它不会在缓存结果上执行编译方面,那么就是fyi。编译类的字节码直接在方法周围注入。如果这是代理并且在没有调用方法的情况下返回(这是可缓存的方法)那么,自然地,后一方面不会被调用。