Spring aop 拦截自定义注解问题

是自定义了一个注解,可以用于方法,和类上面使用

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME) 
@Documented
public @interface DynamicDataSource {
    String value() default "master"; 
}

然后在使用aop的切面,定义了一个注解拦截

//@Pointcut(value="execution(* com.xxoo.smart.service..*(..))")
@Pointcut(value="@annotation(com.xxoo.smart.commons.annotation.DynamicDataSource)")
    public void aspect(){    }

然后通过

public static void main(String[] args){   
        ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config.xml");      
        IOrderService us = (IOrderService) ctx.getBean("orderServiceImpl0000");  
        us.test("aaaaaaaaaaaa");  
    } 

测试,如果使用第一个表达式拦截,在类上面使用定义注解,可以被拦截到,但是如果使用注解的方式拦截。是不会进入的。为什么?

阅读 12.2k
2 个回答
新手上路,请多包涵

问下这个问题有结论吗?
遇到同样问题,搜到的aop拦截自定义注解,基本都是加在了方法而非类或接口上,不知道这里是否是spring的限制

"@within(com.xx.yyy.myannotation.myLog)",myLog是你自定义的注解

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏