AOP不能拦截quartz Job?
想要在每个Job
跑之前插入一段逻辑,但如下代码经测试进不去AOP
的代码,为什么?如果实在不行,还有什么方案可以实现吗?
代码贴在下面:
@Component
public class CheckPayJob {
@Autowired
private OrderService orderService;
@Scheduled(cron="${checkPay.cron}")
public void execute() {
// some job core here
}
}
@Component
@Aspect
public class JobAspect {
@Pointcut("@annotation(org.springframework.scheduling.annotation.Scheduled)")
public void scheduledPointCut() {}
@Before("scheduledPointCut()")
public void before() throws Throwable {
String T = IdMaker.generate();
MDC.put(Constants.T, T);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
直接对方法进行切入试试。。。。
首先你要明白Spring两种代理方式的区别。
你想拦截任务调度的注解,在这之前织入特定的逻辑,那就必须保证这个任务类中不能含有调用自身方法的方法或引用,也就是说,这个类必须是经过代理的。或者去applicationContext获取到Bean之后再调用,否则aspectJ将无法正常拦截。
你要检查你这个Bean是否被Spring代理过,如果正常代理过,则需要检查是否有自身的引用,this,或者autowired自身之类的。
我也遇到这样问题的 ,,请问你是怎么解决的
感觉是你切入点写错了吧,qartz的执行的主体是job的execute方法吧