首頁  >  文章  >  Java  >  SpringBoot2底層註解@ConfigurationProperties如何設定綁定

SpringBoot2底層註解@ConfigurationProperties如何設定綁定

WBOY
WBOY轉載
2023-05-12 08:22:05974瀏覽

我們通常會把一些經常變動的東西放到設定檔裡。

例如之前寫在設定檔application.properties裡的連接埠號碼server.port=8080,另外常見的還有資料庫的連線資訊等等。

那麼,我的資料庫連接資訊放在設定檔裡,我要使用的話肯定得去解析設定文件,解析出的內容在 bean 裡面去使用。

整個場景其實就是把設定檔裡的所有配置,綁定到 java bean 裡面

要完成這個場景,基於 java 原生程式碼寫還是有點麻煩的。通常會做一個封裝,讀取到properties檔案中的內容,並且把它封裝到JavaBean中:

public class getProperties {     public static void main(String[] args) throws FileNotFoundException, IOException {         Properties pps = new Properties();         pps.load(new FileInputStream("a.properties"));         Enumeration enum1 = pps.propertyNames();//得到配置文件的名字         while(enum1.hasMoreElements()) {             String strKey = (String) enum1.nextElement();             String strValue = pps.getProperty(strKey);             System.out.println(strKey + "=" + strValue);             //封装到JavaBean             ... ...         }     }

這裡就是使用Properties類別來載入設定檔a. properties,然後遍歷設定檔中的每一個k-v,取得之後就可以用到對應的地方。

在 springboot 中簡化了這個過程,這就是配置綁定。

配置綁定

透過使用註解@ConfigurationProperties來完成配置綁定,注意需要結合@Component使用。

新建一個元件Car,有2個屬性分別是品牌與價格:

@Componentpublic class Car {    private String brand;    private Integer price;// get set tostring 就不贴了

在設定檔application.properties,設定一些屬性值,例如:

mycar.brand=QQmycar.price=9999

使用@ConfigurationProperties註解,加到元件上:

@Component@ConfigurationProperties(prefix = "mycar")public class Car {    private String brand;    private Integer price;... ...

傳進去的prefix 是設定檔裡的前綴,這裡就是mycar。

驗證

現在來測試是否綁定成功,在之前的HelloController繼續增加一個控制器方法:

@RestControllerpublic class HelloController {    @Autowired    Car car;    @RequestMapping("/car")    public Car car() {        return car;    }    @RequestMapping("/hello")    public String Hello() {        return "Hello SpringBoot2 你好";    }}

部署一下應用,瀏覽器存取http://localhost:8080/car:

SpringBoot2底層註解@ConfigurationProperties如何設定綁定

綁定成功。

另一種方式

除上述方法之外,還可以使用@EnableConfigurationProperties @ConfigurationProperties的方式來完成綁定。

注意,@EnableConfigurationProperties註解要使用在設定類別上,表示開啟屬性配置的功能:

//@ConditionalOnBean(name = "pet1")@Import({User.class, DBHelper.class})@Configuration(proxyBeanMethods = true)@ImportResource("classpath:beans.xml")  //配置文件的类路径@EnableConfigurationProperties(Car.class) //开启属性配置的功能public class MyConfig {    @Bean("user1")    public User user01(){        User pingguo = new User("pingguo",20);        pingguo.setPet(tomcatPet());        return pingguo;    }    @Bean("pet22")    public Pet tomcatPet(){        return new Pet("tomcat");    }}

@EnableConfigurationProperties(Car.class)傳入要開啟配置的類,這可以自動的把Car 註冊到容器中,也就是說之前Car 上的@Component就不需要了。

//@Component@ConfigurationProperties(prefix = "mycar")public class Car {    private String brand;    private Integer price;

重新部署存取下位址,依然可以。

SpringBoot2底層註解@ConfigurationProperties如何設定綁定

關於第二種的使用場景,例如這裡的Car 是一個第三方包裡的類,但是人家源碼沒有加@Component註解,這時候就可以用這種方式來綁定。

最後,要記住當使用@ConfigurationProperties(prefix = "mycar")這個配置綁定時,是跟springboot 核心設定檔application.properties文件的內容建立的綁定關係。

以上是SpringBoot2底層註解@ConfigurationProperties如何設定綁定的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除