Spring Aop не стреляет для аннотации - PullRequest
1 голос
/ 03 октября 2011

Я использую аннотацию для метода.и всякий раз, когда эта аннотация присутствует, я хочу перехватить ее, используя aop.Чего мне не хватает?

<bean id="emailAdvice" class="com.merc.spring.aop.advice.MultiThreadEmailAdvice"/> 

<aop:config>  
    <aop:aspect ref="emailAdvice">  
        <aop:around 
            method="fork"  
            pointcut="execution(* org.springframework.mail.javamail.JavaMailSenderImpl.send(..))"/>  
    </aop:aspect>  
    <aop:aspect ref="emailAdvice">
        <aop:around method="sendEmailAdvice" pointcut="@annotation(sendMailAnnotation)" arg-names="sendMailAnnotation"/>
    </aop:aspect>
</aop:config>
@SendMailAnnotation()
public void testAnnotationEmail() {
    System.out.println("send an email");
}

@Aspect
public class MultiThreadEmailAdvice {
    public void sendEmailAdvice(ProceedingJoinPoint pjp, SendMailAnnotation sendMailAnnotation) throws Throwable {
        System.out.println("before method execution");

        pjp.proceed();

        System.out.println("after method execution");

        System.out.println(sendMailAnnotation.from());
    }
}

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

Оказалось, что класс обслуживания, который вызывает аннотированный метод, не управляется пружиной.Однажды сделав весну удалось, все заработало

0 голосов
/ 03 октября 2011

Попробуйте изменить

@annotation(sendMailAnnotation)

Для

@annotation(<package>.SendMailAnnotation).

в вашем определении бина.

Ex

<aop:around method="sendEmailAdvice" pointcut="@annotation(com.merc.spring.aop.advice.SendMailAnnotation)" arg-names="sendMailAnnotation"/>
...