spring quartzy的spring注入问题(dao层和service层)

许久没有写博文了,今天来写写,毕业设计中遇到的某个小问题,及解决方法。
毕业设计中涉及到spring的定时器quartzy的使用,
遇到的问题是:quartzy中不能使用spring注入的方式注入dao层和service层,原因是spring在加载的时候先加载quarzy,后加载bean。查看了一下源代码:org.springframework.scheduling.quartz.JobDetailFactoryBean。
这个类我们只看他的实现:
![JobDetailFactoryBean类的实现](https://img-blog.csdn.net/20170416232235638?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFpeWlrYWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

实现了ApplicationContextAware,这个类是我当时在实现rpc服务的时候了解过的一个类,适用于异步加载的,可以理解为分开执行,所以我的的bean并不能被注入到quartzy中。
不过利用了一个晚上的时间查找了一些资料,终于皇天不负有心人,找到了一篇:原文地址
接下来我们看代码:
先重写一下AdaptableJobFactory类中的createJobInstance(TriggerFiredBundle bundle)方法:

public class JobFactory extends AdaptableJobFactory{
   
    //这个对象Spring会帮我们自动注入进来,也属于Spring技术范畴.
    @Autowired
    private AutowireCapableBeanFactory capableBeanFactory;

    @Override
    protected Object createJobInstance(TriggerFiredBundle bundle)
            throws Exception {
        //调用父类的方法
        Object jobInstance = super.createJobInstance(bundle);
        //AutowireCapableBeanFactory这个接口一般在applicationContext的内部是较少使用的,
        //它的功能主要是为了装配applicationContext管理之外的Bean。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值