1

我在@Controller 类的函数上定义了两个方面。

一种是@Cacheble(Ehcache Spring注解,使用Spring AOP)。

另一个是计算执行时间的环绕建议。这是一个 AspectJ 编译时方面。

第一次调用该方法时,两个方面都在执行。但是,对于所有后续调用,仅拦截 @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"/> 期待您的建议。

谢谢。

4

2 回答 2

0

要执行方面,您必须在从容器获取的实例上调用您的方法。是这样吗?

于 2012-05-23T21:06:55.840 回答
0

仅供参考,如果这是带有 spring AOP 的编译时 AspectJ,那么它不会在缓存的结果上执行编译的方面。编译类的字节码直接在方法周围注入。如果 this 在没有调用方法的情况下被代理并返回(这就是 cacheable 所做的),那么自然不会调用后一个方面。

于 2012-06-22T09:03:02.577 回答