我在方法上使用注释。每当有这样的警告时,我想用aop拦截它。我错过了什么。spring aop not firing for annotation
<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());
}
}
如果我这样做,我得到以下错误java.lang.IllegalArgumentException:错误在:: 0正式无约束切入点 – user373201
''必须替换为您的注释包前' com.merc.spring.aop.advice',已更新答案 –
正是我所知 –
user373201