文档章节

Spring Boot 报ExceptionInIntializerError

兴趣使然的程序员
 兴趣使然的程序员
发布于 2017/09/11 22:51
字数 252
阅读 20
收藏 0

如果在Spring Boot中使用static变量时,可能会出现如下面的异常:

java.lang.ExceptionInInitializerError

这是由于调用某个static变量属性时而该属性没有初始化而导致的错误。

比如在Spring Boot项目中,使用static代码块初始化某些static变量,并且该类没有处于Spring的管理之下,就可能会出现上述错误。

解决方法:实现ApplicationContextInitializer,自定义在Spring启动前加载的代码

具体如下:

  • 实现ApplicationContextInitializer类,如下:
/**
 * Created by pierre_cai on 2017/9/11.
 */
public class MyStartProcess implements ApplicationContextInitializer {
    @Override
    public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
        //在这个方法中定义需要在程序启动之前加载的代码
        MyService.startProcess();
    }
}
  • 在resources文件下创建META-INF/spring.factories文件,项目结构如下:

  • 在spring.factories文件中声明上面添加的ApplicationContextInitializer实现类
org.springframework.context.ApplicationContextInitializer=com.test.myTest.MyStartProcess

 这样,定义在MyStartProcess类中的方法就会在Spring Boot启动之前加载。避免静态变量在初始化之前就被Spring访问,导致异常。

© 著作权归作者所有

共有 人打赏支持
兴趣使然的程序员
粉丝 21
博文 112
码字总数 87412
作品 0
深圳
程序员
spring boot2.0.4 踩的两个坑

端口号 8090 的时候,请求接口都报 405 ,其他端口正常 对应 issue https://github.com/spring-projects/spring-boot/issues/14195 提 issue 的老兄也遇到了, 不过官方没有复现出来 注解注册...

holysu
09/10
0
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: 困扰了我几天的问题,原来这是 Spring Boot 2.0.5 以上版本的坑,最终从GitHub上找到了答案: 1、一种变相的解决方...

ThinkGem
10/19
0
0
JDK8新特性之Optional

Optional是什么 Jdk8提供,一个可以包含null值的容器对象,可以用来代替xx != null的判断。 Optional常用方法 of 为value创建一个Optional对象,如果value为空则 会报出NullPointerExceptio...

java技术栈
2017/10/09
0
0
spring session整合

花了大半天时间,解决了springMVC项目增加spring-session共享session报了异常 前情 项目做了前后端分离,springMVC项目部署在三台tomcat上,前端部署在另三台tomcat上,然后HA做了分发处理,...

jia程序员
05/23
0
0
springboot踩坑记--springboot正常启动但访问404

一 spring boot的启动类不能直接放在main(src.java.main)这个包下面,把它放在有包的里面就可以了。 二 正常启动了,但是我写了一个controller ,用的@RestController 注解去配置的controlle...

onedotdot
08/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
38
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
33
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
43
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
32
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
41
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部