App下載

簡單介紹SpringBoot中@ConfgurationProperties注解的使用

猿友 2021-07-26 10:54:11 瀏覽數(shù) (3280)
反饋

源碼

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConfigurationProperties {
    @AliasFor("prefix")
    String value() default "";

    @AliasFor("value")
    String prefix() default "";

    boolean ignoreInvalidFields() default false;

    boolean ignoreUnknownFields() default true;
}

使用

向注解中傳入配置文件中的前綴名,如果配置文件如下:

myConfigs:
  config1:
    field1: f1
    field2: f2
    field3: f3

那么代碼中的配置類應該這樣寫:

@Component
@ConfigurationProperties("myConfigs.config1")
public class MyConfig1 {
    String field1;
    String field2;
    String field3;
}

如上所示,field1, field2, field3三個屬性就被綁定到了對象上。

注意到我們使用了@Component,實際上我們使用配置類都是將其注入到其他類中,所以我們往往將其注冊為Bean。

ignoreInvalidFields默認為false,不合法的屬性的屬性會默認拋出異常;
ignoreUnknownFields默認為true, 未能識別的屬性會被忽略(所以打錯了名字就會被忽略了)

@ConfigurationProperties(prefix="config.prefix", ignoreInvalidFields=true, ignoreUnknownFields=false)
public class MyConfig {
    // fields
}

Spring Boot的綁定規(guī)則相當寬松,myField, my-field, my_field等都能識別綁定到myField上。

可以給字段設定默認值,這樣配置中沒有傳入時會使用默認值。

@ConfigurationProperties("your.prefix")
public class YourConfig {
    private String field = "Default"
    // setter
}

類的字段必須要有public訪問權(quán)限的setter方法。

在很多情況下public的setter方法時必須的,使用IDEA的話,這里推薦Alt+Insert(Windows, Mac使用Alt+n)生成;當然,想使用Lombok也可以

以上就是關(guān)于 SpringBoot 中的@ConfigurationProperties注解的的詳細內(nèi)容,想要了解更多關(guān)于SpringBoot中其他注解具體使用方法的資料請關(guān)注W3Cschool其它相關(guān)文章!

0 人點贊