SpringBoot项目中通过@Value给参数赋值失败的解决方案
更新时间:2024年04月29日 09:31:28 作者:Keep Doing this
springboot项目中通过@Value给属性附值失败,给参数赋值失败,打印为空值,文中通过代码示例给大家介绍的非常详细,对大家解决问题有一定的帮助,需要的朋友可以参考下
项目场景:
springboot项目中通过@Value给属性附值失败
问题描述
给参数赋值失败,打印为空值
@Value("${python.server.port}") private int port; @Value("${python.server.host}") private String host; public PythonSocketClient(){ System.out.println("Host: " + host); System.out.println("Port: " + port); connect(); }
测试发现是成功注入的
@SpringBootTest public class ValueTest { @Value("${python.server.host}") private String host; @Test public void testConfiguration() { System.out.println("Host configured as: " + host); } }
可以看到是正确赋值了
原因分析:
这是因为在 Spring Bean 的生命周期中,构造函数是最先被调用的,此时依赖注入还没有完成,因此 @Value 注入的字段尚未被初始化。
也就是说还没附上值就运行了构造器
解决方案:
使用 @PostConstruct 注解的方法来确保在所有字段注入完成之后再执行初始化逻辑。
@Value("${python.server.port}") private int port; @Value("${python.server.host}") private String host; @PostConstruct public void init() { System.out.println("Host: " + host); System.out.println("Port: " + port); connect(); }
再次运行
发现已经可以正常获取值了。
到此这篇关于SpringBoot项目中通过@Value给参数赋值失败的解决方案的文章就介绍到这了,更多相关SpringBoot @Value赋值失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
利用Java的MyBatis框架获取MySQL中插入记录时的自增主键
这篇文章主要介绍了利用Java的MyBatis框架获取MySQL中插入记录的自增长字段值,其中大家可以看到MyBatis支持普通SQL语句所带来的遍历,需要的朋友可以参考下2016-06-06Spring Boot 中常用的注解@RequestParam及基本用法
@RequestParam 是 Spring Framework 和 Spring Boot 中常用的注解之一,用于从请求中获取参数值,本文给大家介绍Spring Boot 中常用的注解@RequestParam,感兴趣的朋友一起看看吧2023-10-10
最新评论