@Value注入失败问题和解决方案

本文针对Spring框架中Bean创建失败及依赖注入问题进行了详细的分析,包括@Value注解的使用误区、不同环境下配置文件的设置等,为开发者提供了解决方案。

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

org.springframework.beans.factory.BeanCreationException: Error
creating bean with nameXXXServiceIpml: Injection of
autowired dependencies failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Could not autowire field: private java.lang.String com.XX.service.ipml.XXServiceIpml.ABCD; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder ‘XXX_URL’ in string value “${XXX_URL}
具体检查以下几点:

(1)@Value是否引对包

在这里插入图片描述
(2)对应active环境的application.properties配置文件是否有这个参数,特别留意多环境情况下的:dev,local,staging,pre,qa,prod,参数名称是否写对

(3)代码中这个变量如果写出static的,也会赋值失败,final的更加不行
在这里插入图片描述
(4)没有加容器注解的类无法使用,也就是说,要使用@Value,当前Class必须交由spring容器管理,也就是必须加上@Controller,@Service,@Component,@Repository…这一类注解

(5)使用被Spring容器管理的类,只能通过@Autowrite方式注入其单例进行使用,不能自己new 一个出来,否则失效

(6)如果上述问题都检查无误,那么这也是我踩的一个坑,是项目的配置出的问题,按照正常来说,application.properties配置一个XXX_URL=XXXXXXX 之后,在方法中可以用@Value的形式获取,但是偏偏这一次怎么拿都不行,也排查了一堆原因,后来发现:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结论:
假如你的项目是设置了不同环境指定读取对应的properties,就很容易出现这个问题,这个时候就要求每个环境的properties都要配置一下那个参数,不然就读取不到
或者把其它applicationContext-XX.xml的各种不同环境的XML的引入proerties的配置文件的标签删除,
在这里插入图片描述
然后再修改applicationContext.xml;让它统一加载全部的properties:
在这里插入图片描述
这样也可以

以上就是我总结的一些小坑,以后有遇到持续补充~!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值