使用@Scheduled 注解产生空指针问题
产生原因:
这是因为@Scheduled注解方式级别高于@Resoure资源注入级别,导致了资源注入失败
解决方式:
- 实现ApplicationContextAware
- 通过继承这个对象能获取到ApplicationContext对象,然后在通过他获取资源对象
为什么ApplicationContext能获取对象?
1.ApplicationContext是Spring中的核心接口和容器,
2.允许容器通过应用程序上下文环境创建、获取、管理bean
3.通常我们使用spring来自动注入对象,而获取ApplicationContext就能主动去获取资源对象
该接口具有三个常用的实现类:
1、ClassPathXmlApplicationContext:
可以加载类路径下的配置文件,要求配置文件必须在类路径之下。
2、FileSystemXmlApplicationContext:
可以加载磁盘中任意路径下的配置文件,要求具有访问权限。
3、AnnotationConfigApplicationContext:
用于读取注解创建容器。