ClownsAndTears 2017-05-18 11:42 采纳率: 50%
浏览 917
已采纳

SOS!!!Spring依赖注入的bean。第一次可以顺利进入方法里,第二次居然卡门上了。

这是一个定时任务:

 JobDetail job2 = newJob(AutoCompleteSearch.class).withIdentity("job2", "group2").build();
            Trigger trigger2 = newTrigger().withIdentity("trigger2", "group2").startNow()
                    .withSchedule(SimpleScheduleBuilder.repeatMinutelyForever(10)).build();

这是进来以后的一个类:

 public class AutoCompleteSearch implements Job {

    private static boolean isWorking = false;
    Logger LOG = LoggerFactory.getLogger(AutoCompleteSearch.class);

    WebSearchContentService service;

    public AutoCompleteSearch() {
        service = (WebSearchContentService) Spring.getBean("webSearchContentService");
    }

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        if (!isWorking) {
            isWorking = true;
            LOG.info("定时检查下载状态任务正在执行中......isWorking:{},service:{}", isWorking, service);
            if (service != null) {
                service.completeSearch();
            } else {
                LOG.error("检测到service 为空,重新注入service");
                service = (WebSearchContentService) Spring.getBean("webSearchContentService");
                if (service != null) {
                    service.completeSearch();
                } else {
                    LOG.error("service重新注入之后还是为空......{}", service);
                }
            }
            isWorking = false;
            LOG.info("定时检查下载状态任务已完成......isWorking:{}", isWorking);
        }

    }

}

然后这是再进来以后的方法:

 @Component
public class WebSearchContentService {

    Logger LOG = LoggerFactory.getLogger(WebSearchContentService.class);

    public void completeSearch() {
        LOG.debug("准备去获取未完成的条件......");
        }

    }

打印的日志:

定时检查下载状态任务正在执行中......isWorking:true,service:service.WebSearchContentService@5cd070ca
准备去获取未完成的条件......
定时检查下载状态任务已完>成......isWorking:false

定时检查下载状态任务正在执行中......isWorking:true,service:service.WebSearchContentService@5cd070ca

然后后面居然没!有!了!!!

  • 写回答

3条回答 默认 最新

  • ClownsAndTears 2017-05-19 05:55
    关注

    我把

     service = (WebSearchContentService) Spring.getBean("webSearchContentService");
    

    换成了

     ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("spring-hibernate.xml");
            service = (WebSearchContentService) ctx.getBean("webSearchContentService");
    

    问题暂时解决。。。。
    但是根本问题还没解决。。。。求高手。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何实现从tello无人机上获取视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决