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相关推荐

  1. Java工具类解决Spring初始化ApplicationContext为null的问题

    今天临时加了个需求,我想着用 Spring 来装载,配合 localcache 这样就能做到无感在 web 启动的时候预先将需要的数据加载到内存中.以便于以后直接拿来使用,不用再次进行加载. 目录 A ...

  2. SpringBoot中注入ApplicationContext对象的三种方式

    在项目中,我们可能需要手动获取spring中的bean对象,这时就需要通过 ApplicationContext 去操作一波了! 1.直接注入(Autowired) @Component public ...

  3. Springboot启动后频繁打印错误日志 /null/swagger-ui.html解决方案

    Springboot启动后频繁打印错误日志 /null/swagger-ui.html解决方案 报错信息 解决办法 报错信息 2019-05-30 12:59:48.331 WARN 5032 --- ...

  4. springboot启动原理分析

    目录 前言 起步依赖 自动配置 总结 前言 现如今我们使用java搭建工程的时候,使用过springboot的同学很清楚,有很多的默认配置springboot已经帮助我们配置好了,进一步的简化了我们的 ...

  5. springboot启动过程_不要搞笑哈,你用了5年的SpringBoot框架,竟然不了解它的启动过程?...

    SpringBoot的启动很简单,代码如下: @SpringBootApplicationpublic class MyApplication { public static void main(St ...

  6. springboot启动流程

    一句话总结:在context的refresh方法中,需要注册bean definition,实例化bean.在加载bean defintion的时候使用ConfigurationClassParser ...

  7. SpringBoot启动过程详解

    Spring Boot通常有一个名为*Application的入口类,在入口类里有一个main方法,这个main方法其实就是一个标准的java应用的入口方法. 在main方法中使用SpringAppl ...

  8. SpringBoot启动流程是怎样的

    前言 SpringBoot一开始最让我印象深刻的就是通过一个启动类就能启动应用.在SpringBoot以前,启动应用虽然也不麻烦,但是还是有点繁琐,要打包成war包,又要配置tomcat,tomcat ...

  9. SpringBoot学习(二)探究Springboot启动机制

    引言: SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏.所以这次博主就跟你们一起探究一下SpringBoot的启动原 ...

最新文章

  1. 着眼未来!2019未来杯高校AI挑战赛圆满落幕
  2. 手机浏览器UserAgnet大全
  3. linux ubuntu桌面进程,如何加快你的Ubuntu桌面性能
  4. python面向对象:多态与多态性
  5. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-04项目范围(Scope)管理...
  6. centos清楚缓存
  7. 云服务器 ECS > 块存储 > 块存储介绍 > 块存储概述 请输入关键词
  8. 后台报错java.lang.IllegalArgumentException: Invalid character found in the request target.
  9. 《Flutter 从0到1构建大前端应用》读后感—第9章【插件与混合工程】
  10. iview render设置属性_iView 发布 3.4.0 版本,代号 BestLuck
  11. html弹出广告设计,全屏弹出广告交互设计探讨
  12. 韩文、日语相关 文档扫描识别 的福音
  13. 【修身养性】那些看不见的教养
  14. 关于互联网金融的安全、监管
  15. 12306的西天取经路 - 春节抢票与PostgreSQL数据库设计思考
  16. 2021年人工智能(AI)的五大发展方向
  17. 2022 上半年 FDA 小分子药物盘点 - MedChemExpres
  18. 20-HTML与HTML5常用标签(前端)
  19. 嵌入式硬件(一)概述
  20. 用matlab绘制抛物线y的x平方,利用matlab绘制多重x/y曲线

热门文章

  1. java 初始化数组_java如何实现数组初始化
  2. 安图实验室信息系统--用户许可协议(仅供学习使用)
  3. ipp协议 服务器,IPP远程服务
  4. 移动开发的软件开发生命周期介绍(二)
  5. SQLMap中tamper的简介
  6. sqlmap之tamper脚本
  7. MySQL查询近12个月数据,无则补0
  8. 计算机硬件的组成、python的开发层面及语法介绍
  9. 输出递归因数分解php,[学习笔记] Miller-Rabin质数测试 Pollard-Rho质因数分解
  10. word,添加文献脚注