Runnable运行定时任务中遇到的Bean注入问题

在使用ScheduleFuture实现定时任务中,因为可能存在多个定时任务同一时段运行的情况。所以在此使用了多线程,但在使用@Autowired注解注入Bean的时候一直报空指针,后面查阅了一些文章后发现是因为,多线程每次运行都不在spring容器中,而后则使用了手动获取的方式,手动获取需要实现ApplicationContextAware接口,代码如下

@Component
public class BeanContext implements ApplicationContextAware {
  @Override
  public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    BeanContext.applicationContext = applicationContext;
  }
  private static ApplicationContext applicationContext;

  public static ApplicationContext getApplicationContext(){
    return applicationContext;
  }
}

这里的@Component可加可不加,因为这个是一个工具类,我这是为了方便别的代码里要用的时候方便注入的。
这个工具类写好后在需要注入的时候BeanContext.getApplicationContext().getBean(SseScheduleMonitorService.class);即可

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 来源:关于Spring IOC (DI-依赖注入)你需要知道的一切作者:zejian Dao层(AccountDa...
    杨井阅读 10,695评论 0 27
  • 引言: 在Spring中提供了非常多的方式注入实例,但是由于在初始化顺序的不同,基于标注的注入方式,容易出现未被正...
    bladestone阅读 9,699评论 1 3
  • 注意LifecycleProcessor接口继承了Lifcycle接口。同时,增加了2个方法,用于处理容器的ref...
    google666s阅读 4,786评论 0 51
  • 转自:彻底理解SpringIOC、DI-这篇文章就够了 先看一个循环依赖问题 现象 循环依赖其实就是循环引用,也就...
    王帅199207阅读 92,141评论 12 95
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,871评论 1 32

友情链接更多精彩内容