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赋值失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于Jedis的用法以及Jedis使用Redis事务

    关于Jedis的用法以及Jedis使用Redis事务

    这篇文章主要介绍了关于Jedis的用法以及Jedis使用Redis事务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java的无参构造函数用法实例分析

    Java的无参构造函数用法实例分析

    这篇文章主要介绍了Java的无参构造函数用法,结合实例形式分析了java无参构造函数基本原理、用法及相关操作注意事项,需要的朋友可以参考下
    2019-09-09
  • Java8使用Function读取文件

    Java8使用Function读取文件

    这篇文章主要为大家详细介绍了Java8如何使用Function读取文件,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下
    2024-12-12
  • java volatile关键字使用方法及注意事项

    java volatile关键字使用方法及注意事项

    这篇文章主要介绍了java volatile关键字使用方法及注意事项的相关资料,当一个变量被声明为 volatile 后,java 内存模型确保所有使用该变量的线程能看到相同的、一致的值。,需要的朋友可以参考下
    2017-07-07
  • Java网络编程之UDP实现原理解析

    Java网络编程之UDP实现原理解析

    UDP实现通信非常简单,没有服务器,每个都是客户端,每个客户端都需要一个发送端口和一个接收端口,本文给大家介绍Java网络编程之UDP实现原理解析,感兴趣的朋友一起看看吧
    2021-09-09
  • java使用Dijkstra算法实现单源最短路径

    java使用Dijkstra算法实现单源最短路径

    这篇文章主要为大家详细介绍了java使用Dijkstra算法实现单源最短路径,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Java接口定义与实现方法分析

    Java接口定义与实现方法分析

    这篇文章主要介绍了Java接口定义与实现方法,简单说明了接口的概念、功能,并结合实例形式分析了接口的相关定义与使用技巧,需要的朋友可以参考下
    2017-11-11
  • mybatis-plus:xml拼接sql方式

    mybatis-plus:xml拼接sql方式

    这篇文章主要介绍了mybatis-plus:xml拼接sql方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • java 单例模式和工厂模式实例详解

    java 单例模式和工厂模式实例详解

    这篇文章主要介绍了Java设计模式编程中的单例模式和简单工厂模式以及实例,使用设计模式编写代码有利于团队协作时程序的维护,需要的朋友可以参考下
    2017-04-04
  • java web项目里ehcache.xml介绍

    java web项目里ehcache.xml介绍

    java web项目里ehcache.xml介绍,需要的朋友可以参考一下
    2013-03-03

最新评论