1. 程式人生 > >Spring boot 配置檔案引數對映到配置類屬性

Spring boot 配置檔案引數對映到配置類屬性

【原理分析】:SpringBoot之@EnableConfigurationProperties分析

【原理分析】:在Spring Boot中使用 @ConfigurationProperties 註解, @EnableConfigurationProperties

1. pom

        <!-- 通過資原始檔注入屬性配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId
>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>

2. main方法上添加註解

  @EnableConfigurationProperties({配置類1.class,配置類2.class})

@SpringBootApplication
@EnableConfigurationProperties(SystemConfig.class)
public class
BootApplication { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(BootApplication.class, args); System.out.println("start ok"); }

3. 配置類

  配置引數在 application.yml 檔案中,系統自動讀取該檔案,所以不必指定配置檔案;

  prefix 表示引數 key 的字首;

  如果需要指定配置檔案,則需要使用新增 @PropertySource("檔案路徑") 註解(測試時讀取不到配置檔案,待解決);

@ConfigurationProperties(prefix = "system")
public class SystemConfig  {
    private Integer type;

    public SystemConfig() {
        System.out.println("SystemConfig");
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }
}

4. 配置檔案

4.1 yml 檔案

system:
  type: 2

 

4.2 properties 檔案

system.type=2

 

5. 常見問題

5.1 是否新增@Configuration 註解(原因暫不明確)

  初始化其他Bean時如果依賴配置類,則配置類不能新增@Configuration註解,否則spring會提示有兩個bean,必須指定一個bean;

  例項化其他Bean時如果不依賴配置類,配置類新增@Configuration註解也可以正常執行;