是自定义了一个注解,可以用于方法,和类上面使用
@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");
}
测试,如果使用第一个表达式拦截,在类上面使用定义注解,可以被拦截到,但是如果使用注解的方式拦截。是不会进入的。为什么?
问下这个问题有结论吗?
遇到同样问题,搜到的aop拦截自定义注解,基本都是加在了方法而非类或接口上,不知道这里是否是spring的限制