记一次Spring boot工程通过ApplicationContextAware注入ApplicationContext为null的问题

Spring boot工程通过ApplicationContextAware注入ApplicationContext为null的问题

  • 问题背景
    • 功能实现
    • 问题解决

问题背景

最近有个需求,需要实现定时任务通过bean来调用方法,于是按照以前的经验决定编写一个方法通过实现ApplicationContextAware接口来把ApplicationContextAware注入进来。

功能实现

由于使用的是Springboot的2+版本实现的,所以代码在编写的时候使用的都是java代码,没有使用xml配置文件
记一次Spring boot工程通过ApplicationContextAware注入ApplicationContext为null的问题_第1张图片
按照之前的经验此时就可以通过
ConstantConfig constantConfig = SpringContextJobUtil.getBean(XXXX.class);
或者
ConstantConfig constantConfig = SpringContextJobUtil.getBean(XXXBeanname);
来获取到相关的bean,进行相关的方法调用了。

结果在测试的时候发现整个方法抛了一个npe的异常,通过debug发现constantConfig是null。
当时第一反应是在使用spring相关的依赖存在问题,检查之后发现spring相关的依赖没有问题(使用的spring-boot-starter-web)

问题解决

查看了以前实现的代码发现也没什么大的差异,从网上查了一些资料之后觉得可能是类加载的问题,想到新的项目搭建的时候顺手添加了一个spring-dev-tool 但是没有进行具体的使用。所以决定去掉这个包。

记一次Spring boot工程通过ApplicationContextAware注入ApplicationContext为null的问题_第2张图片
去掉之后再次进行尝试,测试通过。

你可能感兴趣的:(问题,java,spring,boot)