我有以下配置:

 
@Aspect 
public class MyAspect { 
 
 @Around(@annotation(SomeAnnotation)) 
 public Object myMethod(ProceedingJoinPoint joinPoint) throws Throwable { 
   System.out.println("Hello..."); 
 } 
} 

并具有以下 bean 定义:

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
        http://www.springframework.org/schema/aop  
        http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> 
    <bean id="myAspect" class="MyAspect" /> 
</beans> 

我看到该行为未在运行时应用于 @SomeAnnotation 注释方法。知道为什么吗?

谢谢。

请您参考如下方法:

确保带有@SomeAnnoation 的类是由Spring 容器创建的。 Spring 通过创建代理类来包装对象,从而将 AOP 应用于从容器中检索到的类。然后,此代理类在调用该对象的方法之前和之后执行方面。

如果您不确定,请尝试调试您正在使用该类的位置。您应该看到该对象不是您的类的实例,而是一个代理对象。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!