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判断输入年份是否为闰年完整代码

    使用java判断输入年份是否为闰年完整代码

    闰年的引入确保了我们的日历与地球运行轨道的对齐,使得时间的计算更加准确,在编程中判断给定年份是否为闰年是一项常见的任务,这篇文章主要给大家介绍了关于使用java判断输入年份是否为闰年的相关资料,需要的朋友可以参考下
    2023-10-10
  • 利用Java的MyBatis框架获取MySQL中插入记录时的自增主键

    利用Java的MyBatis框架获取MySQL中插入记录时的自增主键

    这篇文章主要介绍了利用Java的MyBatis框架获取MySQL中插入记录的自增长字段值,其中大家可以看到MyBatis支持普通SQL语句所带来的遍历,需要的朋友可以参考下
    2016-06-06
  • jar包冲突常用的解决方案

    jar包冲突常用的解决方案

    引言在使用java语言开发,maven做项目管理时,我们经常遇到一个头疼的问题就是jar包冲突,这篇文章主要给大家介绍了关于jar包冲突常用的解决方案,需要的朋友可以参考下
    2023-12-12
  • Springboot内外部logback多环境配置详解

    Springboot内外部logback多环境配置详解

    本文主要介绍了Springboot内外部logback多环境配置详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Spring Boot 中常用的注解@RequestParam及基本用法

    Spring Boot 中常用的注解@RequestParam及基本用法

    @RequestParam 是 Spring Framework 和 Spring Boot 中常用的注解之一,用于从请求中获取参数值,本文给大家介绍Spring Boot 中常用的注解@RequestParam,感兴趣的朋友一起看看吧
    2023-10-10
  • logback的使用和logback.xml详解(小结)

    logback的使用和logback.xml详解(小结)

    Logback是由log4j创始人设计的另一个开源日志组件,这篇文章主要介绍了logback的使用和logback.xml详解(小结),非常具有实用价值,需要的朋友可以参考下
    2018-11-11
  • 浅谈SpringBoot如何自定义Starters

    浅谈SpringBoot如何自定义Starters

    今天带大家来学习SpringBoot如何自定义Starters,文中有非常详细的图文介绍及代码示例,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • springboot中请求地址转发的两种方案

    springboot中请求地址转发的两种方案

    在开发过程中,我们经常需要将请求从一个服务转发到另一个服务,以实现不同服务之间的协作,本文主要介绍了springboot中请求地址转发的两种方案,感兴趣的可以了解一下
    2023-11-11
  • SpringBoot实现启动项目后立即执行的方法总结

    SpringBoot实现启动项目后立即执行的方法总结

    在项目开发中某些场景必须要用到启动项目后立即执行方式的功能,所以这篇文章就来和大家聊聊实现立即执行的几种方法,希望对大家有所帮助
    2023-05-05
  • Gradle的安装和IDEA集成、项目导入的详细教程

    Gradle的安装和IDEA集成、项目导入的详细教程

    这篇文章主要介绍了Gradle的安装和IDEA集成、项目导入的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08

最新评论