iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
Software Development

我在 Spring Boot 3 裡面挖呀挖呀挖系列 第 9

Day08 - 常用註解-屬性綁定

  • 分享至 

  • xImage
  •  

Day08 - 常用註解-屬性綁定

前言

昨天我們講述了條件註解,@ConditionalOnClass(@ConditionalOnMissingClass)他可以在類路徑下存在(不存在)XXX才注入到Container中,又或是@ConditionalOnBean(@ConditionalOnMissingBean)聲明Container中存在(不存在)XXXBean我們才將他注入。今日我們來說說如何把註冊的Bean與配置文件綁定。

專案建立

創建day08_binding_properties專案

https://ithelp.ithome.com.tw/upload/images/20230924/20128084sOFvlP3uZW.png
https://ithelp.ithome.com.tw/upload/images/20230924/201280842kemrW2Jn0.png

類別準備

public class Employee {
    private String id;
    private String name;

    //getter&setter略
}
@SpringBootApplication
public class Day08BindingPropertiesApplication {

    public static void main(String[] args) {

        ApplicationContext ioc = SpringApplication.run(Day08BindingPropertiesApplication.class, args);

        for (String s : ioc.getBeanNamesForType(Employee.class)) {
            System.out.println(s);
            System.out.println(ioc.getBean(s));
        }
    }

}

配置文件

emp.id = 1
emp.name = james

boss.id = 99
boss.name = big boss

屬性綁定

@ConfigurationProperties

聲明組件的屬性和配置文件(Application.pro)的那些前綴開始綁定,此Annotation尚須將自己放入容器中,binding的方式有兩種

  1. 設置在Employee上

@ConfigurationProperties(prefix = "emp")
@Component
public class Employee {
    //略
}

執行結果
https://ithelp.ithome.com.tw/upload/images/20230924/20128084gPQ8AtQSCr.png
2. 設置在在配置類中

@Configuration
public class AppConfig {

    @ConfigurationProperties(prefix = "emp")
    @Bean
    public Employee emp(){
        return new Employee();
    }

    @ConfigurationProperties(prefix = "boss")
    @Bean
    public Employee boss(){
        return new Employee();
    }
}

執行結果
https://ithelp.ithome.com.tw/upload/images/20230924/20128084rp7P5DK8CG.png

@EnableConfigurationProperties

啟動哪些類別與配置文件綁定並放到Container中。因SpringBoot預設只掃描自己package下的類別,所以在第三方套就可以透過這個方法將屬性綁定並註冊到Container中

@SpringBootApplication
@EnableConfigurationProperties(Employee.class)
public class Day08BindingPropertiesApplication {
    //略
}
@ConfigurationProperties(prefix = "boss")
public class Employee {
    //略
}

執行結果
https://ithelp.ithome.com.tw/upload/images/20230924/20128084sLZXWcJPUE.png

Reference


上一篇
Day07 - 常用註解-條件註解
下一篇
Day09 - 深入理解自動配置原理之spring-boot-starter
系列文
我在 Spring Boot 3 裡面挖呀挖呀挖31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言