Spring/SpringBoot:SpringBoot中@Value注入失败或取值为null解决方案 | 您所在的位置:网站首页 › 属性getlplocaloffset为null › Spring/SpringBoot:SpringBoot中@Value注入失败或取值为null解决方案 |
目录 问题引出 问题解决 1.检测语法是否正确 2.检测配置文件中是否有进行配置 3.检测是否增加注解 4.检测代码中的书写方式 5.@Value无法注入static属性 最终解决 问题引出最近开发的项目中遇到了@Value注解无法引入值的问题,让我们来详细分析一下是什么原因。 首先,贴代码 config文件 @Configuration public class InfluxdbConfig { @Value("${spring.influx.url:''}") private String influxDBUrl; @Value("${spring.influx.user:''}") private String userName; .................. }yml文件 spring: influx: url: http://127.0.0.1:8086 user: 123 password: 123@Value注入的值为‘’,只取到了默认值,没有获取到yml中的值,将默认值取消后@Value("${spring.influx.url}"),运行程序报错 Could not resolve placeholder 'spring.influx.url' in value "${spring.influx.url}" 很明显没有注入成功,接下来我们进行问题的解决 问题解决经过查询,网络上大概有这五种解决方案。 1.检测语法是否正确 @Value("${spring.influx.url:''}") private String influxDBUrl;
语法正确,没有问题 2.检测配置文件中是否有进行配置 .yml文件配置正确,没有异常 3.检测是否增加注解在spring中,使用了spring的注解,那么就需要使用spring来进行管理对象,而不能自己进行new,否则就会导致失败。 使用了@Configuration注解,也没有问题。 4.检测代码中的书写方式不要再无参构造器中,进行new对象的操作。否则就会造成@Value注解失败。 5.@Value无法注入static属性使用@Value直接放在static的属性上是无法注入内容的!!!此方式会一直是null. 五种方案都尝试之后,发现问题还是没有解决 最终解决结果无数次排查,始终没有找到原因,最后在pom.xml发现了问题 handler pom handler就是这个,竟然设置成了pom,此属性可设置三种参数,分别为: 属性表示项目的打包类型【默认:jar类型】pom pom 【父类型及抽出的公共组件都为pom类型,没有application文件,不能单独启动运行】jar jar 【内部调用或者是做服务使用】war war 【需要部署的项目】 将此配置删除之后,@Value就能正确取值了。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |