springboot 启动 ApplicationContext applicationContext = null
ApplicationContext applicationContext = null
Springboot 启动的时候,调用报错了,applicationContext = null 该如何处理呢?
代码:
@Component
public class SpringUtils implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {SpringUtils.applicationContext = applicationContext;}public static ApplicationContext getApplicationContext(){return applicationContext;}public static Object getBean(String name) {return applicationContext.getBean(name);}public static <T> T getBean(Class<T> clazz) {return applicationContext.getBean(clazz);}
}
情况1: 不在初始化中就调用:
Springboot项目启动后,使用的时候,动态初始化调用类,没什么问题。
SpringUtils.getBean("convertService")
情况2: 初始化就调用
但是在初始化的时候,使用了 @PostConstruct
@PostConstruct
public void init(){SpringUtils.getBean("convertService");
}
启动的时候,进行初始化,applicationContext 报错了,applicationContext = null
思考:
网上说了各种解决问题的方法:比如加 @Lazy(false)
@Component
@Lazy(false)
public class SpringUtils{
}
但是并没有解决问题。 知道问题是:初始化的时候顺序的问题,如何先初始化这个类,然后再执行加了@PostConstruct 这个注解的方法呢?
处理:初始化 SpringUtils
在调用方法前,先初始化 SpringUtils
@Resource
private SpringUtils springUtils;@PostConstruct
public void init(){}
这样的方法虽然不是特别好,但是也算是解决问题了。为什么要启动的时候就调用呢? 也可以考虑使用其它的方式去处理,不用直接放到初始化中,或是使用定时器延迟调用。
总结:
springBoot项目初始化就调用SpringUtils的时候,要先进行初始化,然后再执行@PostConstruct的方法。常见的springBoot项目中,基本都没了xml了,不然直接通过xml设置,先读取 SpringUtils类。
springboot 启动 ApplicationContext applicationContext = null相关推荐
- Java工具类解决Spring初始化ApplicationContext为null的问题
今天临时加了个需求,我想着用 Spring 来装载,配合 localcache 这样就能做到无感在 web 启动的时候预先将需要的数据加载到内存中.以便于以后直接拿来使用,不用再次进行加载. 目录 A ...
- SpringBoot中注入ApplicationContext对象的三种方式
在项目中,我们可能需要手动获取spring中的bean对象,这时就需要通过 ApplicationContext 去操作一波了! 1.直接注入(Autowired) @Component public ...
- Springboot启动后频繁打印错误日志 /null/swagger-ui.html解决方案
Springboot启动后频繁打印错误日志 /null/swagger-ui.html解决方案 报错信息 解决办法 报错信息 2019-05-30 12:59:48.331 WARN 5032 --- ...
- springboot启动原理分析
目录 前言 起步依赖 自动配置 总结 前言 现如今我们使用java搭建工程的时候,使用过springboot的同学很清楚,有很多的默认配置springboot已经帮助我们配置好了,进一步的简化了我们的 ...
- springboot启动过程_不要搞笑哈,你用了5年的SpringBoot框架,竟然不了解它的启动过程?...
SpringBoot的启动很简单,代码如下: @SpringBootApplicationpublic class MyApplication { public static void main(St ...
- springboot启动流程
一句话总结:在context的refresh方法中,需要注册bean definition,实例化bean.在加载bean defintion的时候使用ConfigurationClassParser ...
- SpringBoot启动过程详解
Spring Boot通常有一个名为*Application的入口类,在入口类里有一个main方法,这个main方法其实就是一个标准的java应用的入口方法. 在main方法中使用SpringAppl ...
- SpringBoot启动流程是怎样的
前言 SpringBoot一开始最让我印象深刻的就是通过一个启动类就能启动应用.在SpringBoot以前,启动应用虽然也不麻烦,但是还是有点繁琐,要打包成war包,又要配置tomcat,tomcat ...
- SpringBoot学习(二)探究Springboot启动机制
引言: SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏.所以这次博主就跟你们一起探究一下SpringBoot的启动原 ...
最新文章
- 着眼未来!2019未来杯高校AI挑战赛圆满落幕
- 手机浏览器UserAgnet大全
- linux ubuntu桌面进程,如何加快你的Ubuntu桌面性能
- python面向对象:多态与多态性
- 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-04项目范围(Scope)管理...
- centos清楚缓存
- 云服务器 ECS > 块存储 > 块存储介绍 > 块存储概述 请输入关键词
- 后台报错java.lang.IllegalArgumentException: Invalid character found in the request target.
- 《Flutter 从0到1构建大前端应用》读后感—第9章【插件与混合工程】
- iview render设置属性_iView 发布 3.4.0 版本,代号 BestLuck
- html弹出广告设计,全屏弹出广告交互设计探讨
- 韩文、日语相关 文档扫描识别 的福音
- 【修身养性】那些看不见的教养
- 关于互联网金融的安全、监管
- 12306的西天取经路 - 春节抢票与PostgreSQL数据库设计思考
- 2021年人工智能(AI)的五大发展方向
- 2022 上半年 FDA 小分子药物盘点 - MedChemExpres
- 20-HTML与HTML5常用标签(前端)
- 嵌入式硬件(一)概述
- 用matlab绘制抛物线y的x平方,利用matlab绘制多重x/y曲线