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
等注解,实现更灵活的逻辑。
本文来自博客园,作者:帅气的涛啊,转载请注明原文链接:https://www.cnblogs.com/handsometaoa/p/19025883