SpringBoot--用类表示yml配置文件的值

时间:2025-02-13 16:40:52

原文网址:SpringBoot--用类表示yml配置文件的值_IT利刃出鞘的博客-****博客

简介

说明

对于里边的配置,我们可以通过@Value来获得,比如:@Value("${}")。但是,如果属性很多,写很多个@Value就会很繁琐。

解决方案就是:使用@ConfigurationProperties,将一组属性通过一个类来接收。

注意

  1. 保存属性的类必须加getter和setter。
  2. prefix不能有这些:大写字母、某些特殊字符(比如:_、~、!、@、#、$、*、+、:等)
    1. 可以包含的字符有:-

@ConfigurationProperties与@Value的区别

@ConfigurationProperties

@Value

类型

Map、内部类、对象等。

不支持内部类、对象。

spEl表达式

不支持

支持

JSR303数据校验

支持

不支持

功能

一个列属性批量注入

单属性注入

宽松绑定

支持宽松绑定,见:Spring注解--@Value--使用/教程/实例_@value 默认值空字符串-****博客

使用方法

法1:@ConfigurationProperties+@Component

@Component
@ConfigurationProperties(prefix = "hello")
public class HelloProperties {
    private String name;
    private List<String> emails;
    private Map<String, Integer> price;

    // getter and setter
}

法2:@ConfigurationProperties+@Bean

此时HelloProperties不需要加任何注解。 

配置类

@Configuration
public class Config {
    @Bean
    @ConfigurationProperties(prefix = "hello")
    public HelloProperties helloProperties(){
        return new HelloProperties();
    }
}

实体类

public class HelloProperties {
    private String name;
    private List<String> emails;
    private Map<String, Integer> price;

    // getter and setter
}

法3:@EnableConfigurationProperties+@ConfigurationProperties

在有@Configuration注解的类上加@EnableConfigurationProperties来声明。

配置类

@Configuration
@EnableConfigurationProperties()
public class HelloConfiguration {

}

实体类

@ConfigurationProperties(prefix = "hello")
public class HelloProperties {
    private String name;
    private List<String> emails;
    private Map<String, Integer> price;

    // getter and setter
}

实例

上边是文章的部分内容,为便于维护,全文已转移到此网址:SpringBoot–用类表示yml配置文件的值 - 自学精灵

相关文章