SpringBoot如何将applicaton.properties中的数据绑定到bean中

 更新时间:2025年05月16日 11:17:05   作者:cg5017  
SpringBoot中我们该如何将applicaton.properties中的数据绑定到bean中呢?在之间我们是可以通过@value注解,在SpringBoot自动启动后,会自动的去相应的路径中去寻找applicaton.properties配置文件,然后将相应的值赋值上,感兴趣的朋友一起看看吧

一、回顾@value注解

SpringBoot中我们该如何将applicaton.properties中的数据绑定到bean中呢?在之间我们是可以通过@value注解,在SpringBoot自动启动后,会自动的去相应的路径中去寻找applicaton.properties配置文件,然后将相应的值赋值上。回顾如下:

spring.application.name=properties-location
myapp.name=classpath:/config
//纳入IoC容器管理
@Component
public class appConfig {
    @Value("${myapp.name}")
    private String appPath;
    public void printInfo(){
        System.out.println("App Path: " + appPath);
    }
}

如上的方式就可以很好的将配置文件中的信息注入到bean对象中,但是一但配置文件中的要注入bean对象的信息过多的话,那我们就需要写非常多个@value的注解,这样就会非常的麻烦。

二、将配置绑定到简单bean

使用注解@ConfigurationProperties(prefix="myapp")就可以把后面都依次注入,示例如下。

applicaton.properties中的配置内容如下:

spring.application.name=demo4
myapp.configName=test
myapp.configId=1234
myapp.configValue=value
myapp.configKey=1234

想将applicaton.properties中的配置内容赋值到Cogfig这个bean对象中。通过@ConfigurationProperties(prefix="myapp")来实现,且需要注意的是,要写上每个要被赋值属性的setter方法,因为其在被赋值的时候是通过setter方法进行赋值的。同时需要注意属性名要和applicaton.properties中的配置一致。

package com.example.demo4;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "myapp")
public class Config {
    private String configName;
    private String configId;
    private String configValue;
    private String configKey;
    public void setConfigName(String configName) {
        this.configName = configName;
    }
    public void setConfigId(String configId) {
        this.configId = configId;
    }
    public void setConfigValue(String configValue) {
        this.configValue = configValue;
    }
    public void setConfigKey(String configKey) {
        this.configKey = configKey;
    }
    @Override
    public String toString() {
        return "Config{" +
                "configName='" + configName + '\'' +
                ", configId='" + configId + '\'' +
                ", configValue='" + configValue + '\'' +
                ", configKey='" + configKey + '\'' +
                '}';
    }
}

测试结果如下:

package com.example.demo4;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Demo4ApplicationTests {
    @Autowired
    Config config;
    @Test
    void test0() {
        System.out.println(config.toString());
    }
}
输出:Config{configName='test', configId='1234', configValue='value', configKey='1234'}

 三、将配置绑定到嵌套bean

就是其实有时候绑定的bean并不是单一的,是复杂的。

private String configName;
private String configId;
private String configValue;
private String configKey;
private ConfigLocation configLocation;

例如在其中有些bean对象中,其属性可能就不是单一的属性,也可能如private ConfigLocation configLocation;一样,本身也是一个对象,那么像这种嵌套的bean对象又如何注入呢?其实方式是一样的, 也是通过注解@ConfigurationProperties来实现配置到bean的注入。

其ConfigLocation如下。

package com.example.demo4;
public class ConfigLocation {
    private String configCountry;
    private String configState;
    public void setConfigCountry(String configCountry) {
        this.configCountry = configCountry;
    }
    public void setConfigState(String configState) {
        this.configState = configState;
    }
    @Override
    public String toString() {
        return "ConfigLocation{" +
                "configCountry='" + configCountry + '\'' +
                ", configState='" + configState + '\'' +
                '}';
    }
}

 只需要其applicaton.properties的格式改一下就可以实现。

spring.application.name=demo4
myapp.configName=test
myapp.configId=1234
myapp.configValue=value
myapp.configKey=1234
myapp.configLocation.configCountry=china
myapp.configLocation.configState=LiaoNing

测试结果如下:

也是绑定成功了。

四、@EnableConfigurationProperties

@EnableConfigurationProperties的使用方法是在其主入口类上添加该注解,并将启动的配置信息绑定到Config的bean对象上去。

package com.example.demo4;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@SpringBootApplication
@EnableConfigurationProperties(Config.class)
public class Demo4Application {
    public static void main(String[] args) {
        SpringApplication.run(Demo4Application.class, args);
    }
}

 同时Config这个bean对象上不用在使用@Component注解了。

测试:

通过测试,并输出结果正确。 

到此这篇关于SpringBoot中配置绑定到bean中的文章就介绍到这了,更多相关SpringBoot配置绑定bean内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java自动释放锁的三种实现方案

    Java自动释放锁的三种实现方案

    在笔者面试过程时,经常会被问到各种各样的锁,如乐观锁、读写锁等等,非常繁多,下面这篇文章主要给大家介绍了关于Java自动释放锁的三种实现方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 解决jackson反序列化失败InvalidFormatException:Can not deserialize value of type java.util.Date

    解决jackson反序列化失败InvalidFormatException:Can not dese

    这篇文章主要介绍了解决jackson反序列化失败InvalidFormatException:Can not deserialize value of type java.util.Date问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 深入了解Java线程池:从设计思想到源码解读

    深入了解Java线程池:从设计思想到源码解读

    这篇文章将从设计思想到源码解读,带大家深入了解Java的线程池,文中的示例代码讲解详细,对我们的学习或工作有一定的帮助,需要的可以参考一下
    2021-12-12
  • 详解SpringBoot中时间类型的序列化与反序列化

    详解SpringBoot中时间类型的序列化与反序列化

    这篇文章主要为大家详细介绍了SpringBoot中时间类型的序列化与反序列化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-02-02
  • 解决Java中new BigDecimal()的坑

    解决Java中new BigDecimal()的坑

    这篇文章主要介绍了解决Java中new BigDecimal()的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • idea gradle项目复制依赖小技巧(推荐)

    idea gradle项目复制依赖小技巧(推荐)

    这篇文章主要介绍了idea gradle项目复制依赖小技巧,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Java基础之方法重写详解

    Java基础之方法重写详解

    这篇文章主要介绍了Java基础之方法重写详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • 详解SpringBoot如何统一后端返回格式

    详解SpringBoot如何统一后端返回格式

    今天我们来聊一聊在基于SpringBoot前后端分离开发模式下,如何友好的返回统一的标准格式以及如何优雅的处理全局异常,感兴趣的可以了解一下
    2021-07-07
  • Springboot 使用内置tomcat禁止不安全HTTP的方法

    Springboot 使用内置tomcat禁止不安全HTTP的方法

    这篇文章主要介绍了Springboot 使用内置tomcat禁止不安全HTTP的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • kill命令在Java应用中使用的注意事项小结

    kill命令在Java应用中使用的注意事项小结

    这篇文章主要给大家介绍了关于kill命令在Java应用中使用的注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06

最新评论