Spring配置類注解相關應用
相關應用
簡單應用
@Configuration 被該注解標記的類,會被Spring容器進行管理
@ConfigurationProperties 會將外部配置文件的屬性綁定到Java對象的屬性
@SpringBootApplication
public class SimpleApplication {
public static void main(String[] args) {
SpringApplication.run(SimpleApplication.class, args);
}
}
@Configuration
@ConfigurationProperties(prefix = "app")
public class AppProperties {
private String name;
// getters and setters
}
中等規模,多個配置類
這樣會自動掃描 com.example.config 包下所有帶有 @ConfigurationProperties 注解的類并注冊為Bean
@SpringBootApplication
@ConfigurationPropertiesScan("com.example.config")
public class MediumApplication {
public static void main(String[] args) {
SpringApplication.run(MediumApplication.class, args);
}
}
// 配置類無需@Component
@ConfigurationProperties(prefix = "database")
public class DatabaseProperties {
private String url;
private String username;
// getters and setters
}
開發starter
為什么使用 spring.factories ? 讓用戶自動發現加載你的配置,無需額外配置。
// 在starter中
@Configuration
@EnableConfigurationProperties(DatabaseProperties.class)
@ConditionalOnClass(DataSource.class)
@ConditionalOnProperty(name = "dynamic-endpoint.enabled", havingValue = "true", matchIfMissing = false)
public class DatabaseAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public DataSource dataSource(DatabaseProperties properties) {
return new HikariDataSource();
}
}
// spring.factories文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.starter.DatabaseAutoConfiguration
個人總結
- 日常項目中,增加一個配置類,使用
@Configuration@ConfigurationProperties(prefix = "app") - 當一個項目中存在一個config文件夾,并且不想在每個類中都添加
@Configuration注解,使用@ConfigurationProperties(prefix = "app")+@ConfigurationPropertiesScan - 當你需要開發一個starter時候,首先定義需要創建并編寫 spring.factories (SpringBoot2.7之前),在自動配置類上增加
@Configuration的注解,如果該類需要依賴其他配置類時,使用@EnableConfigurationProperties(DatabaseProperties.class)進行注冊激活bean。當然你也可以添加@ConditionalOnClass等注解,實現更靈活的邏輯。
本文來自博客園,作者:帥氣的濤啊,轉載請注明原文鏈接:http://www.rzrgm.cn/handsometaoa/p/19025883

浙公網安備 33010602011771號