SpringAOP pointcut с использованием @annotation неэффективен при применении к IbatisDAO - PullRequest
0 голосов
/ 10 июля 2020

Аннотация:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface IbatisAnno {}

Аспект:

@Component
@Aspect
public class IbatisAsepct {
    
    //not works
    @Pointcut("@annotation(xxx.IbatisAnno)")
    public void m(){}

    //works
    @Pointcut("execution(* xxx.xxDAO.*(..))")
    public void m2(){}

    @Before("m()")
    public void testM(){
        System.out.println("Before   Method...............");
    }


    @Before("m2()")
    public void testM2(){
        System.out.println("Before   Method2...............");
    }
}

Целевой класс:

@EnableAspectJAutoProxy()
public class IbatisOfferFeedDAO extends SqlMapClientDaoSupport implements OfferFeedDAO{
   @IbatisAnno
   public void xxx(){
      this.getSqlMapClientTemplate().insert();
   }
}

Формат не действует при использовании @Pointcut("@annotation(xxx.IbatisAnno)"), но работает при использовании @Pointcut("execution(* xxx.xxDAO.*(..))").

...