Spring Boot中註解@ConfigurationProperties
阿新 • • 發佈:2021-07-01
在Spring Boot中註解@ConfigurationProperties有三種使用場景,而通常情況下我們使用的最多的只是其中的一種場景。本篇文章帶大家瞭解一下三種場景的使用情況。
場景一
使用@ConfigurationProperties和@Component註解到bean定義類上,這裡@Component代指同一類例項化Bean的註解。
基本使用例項如下:
// 將類定義為一個bean的註解,比如 @Component,@Service,@Controller,@Repository // 或者 @Configuration @Component // 表示使用配置檔案中字首為user1的屬性的值初始化該bean定義產生的的bean例項的同名屬性 // 在使用時這個定義產生的bean時,其屬性name會是Tom @ConfigurationProperties(prefix = "user1") public class User { private String name; // 省略getter/setter方法 }
對應application.properties配置檔案內容如下:
user1.name=Tom
在此種場景下,當Bean被例項化時,@ConfigurationProperties會將對應字首的後面的屬性與Bean物件的屬性匹配。符合條件則進行賦值。
場景二
使用@ConfigurationProperties和@Bean註解在配置類的Bean定義方法上。以資料來源配置為例:
@Configuration public class DataSourceConfig { @Primary @Bean(name = "primaryDataSource") @ConfigurationProperties(prefix="spring.datasource.primary") public DataSource primaryDataSource() { return DataSourceBuilder.create().build(); } }
這裡便是將字首為“spring.datasource.primary”的屬性,賦值給DataSource對應的屬性值。
@Configuration註解的配置類中通過@Bean註解在某個方法上將方法返回的物件定義為一個Bean,並使用配置檔案中相應的屬性初始化該Bean的屬性。
場景三
使用@ConfigurationProperties註解到普通類,然後再通過@EnableConfigurationProperties定義為Bean。
@ConfigurationProperties(prefix = "user1") public class User { private String name; // 省略getter/setter方法 }
這裡User物件並沒有使用@Component相關注解。
而該User類對應的使用形式如下:
@SpringBootApplication
@EnableConfigurationProperties({User.class})
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
上述程式碼中,通過@EnableConfigurationProperties對User進行例項化時,便會使用到@ConfigurationProperties的功能,對屬性進行匹配賦值。