Spring/SpringBoot:SpringBoot中@Value注入失败或取值为null解决方案 您所在的位置:网站首页 属性getlplocaloffset为null Spring/SpringBoot:SpringBoot中@Value注入失败或取值为null解决方案

Spring/SpringBoot:SpringBoot中@Value注入失败或取值为null解决方案

2024-04-08 04:40| 来源: 网络整理| 查看: 265

目录

问题引出

问题解决

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 实验室设备网 版权所有