项目启动时报错Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError

本文讲述了作者在项目中遇到的Spring启动时的空指针错误,通过分析发现是静态块和@Autowired注解的执行顺序问题。解决办法是移除静态并使用测试数据初始化。经验教训强调了仔细阅读报错和测试的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

做项目时,为了快速的测试功能,没有选择动用数据库,而是自己初始化了数据

问题描述:

项目启动时报错Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
在这里插入图片描述


原因分析:

1、检查配置,反反复复看了很多遍,确认没有问题。

2、 网上找了很多资料,类似的问题很多,看过答案以后依旧不得其要领。只好继续看报错代码,直到看到这一句:
在这里插入图片描述
好家伙,空指针,然后根据空指针行数找到了空值所在
在这里插入图片描述
Spring在实例化这个类的时候,先执行静态块,再加载autowire注解,所以此时我的对象里是没有值的,此时某个类还未实例化(检查是否已加注解),故而报了这个空指针错误。

解决方案:

如果保留注解,那么去掉对象的static,用死数据初始化对象值(测试数据而已,怎么方便怎么来)
在这里插入图片描述
运行成功,bug解决。
经验教训:
1、仔细看报错信息。

2、每次修改过代码以后,都要记得进行测试,确保修改是正确的。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值