@ConfigurationProperties 用于将属性注入配置类
- 其对应的bean的后置处理器为ConfigurationPropertiesBindingPostProcessor。
- 它是实现了BeanPostProcessor接口,在bean被实例化后,会调用后置处理,递归的查找属性,通过反射注入值,对大多数属性而言强制需提供其setter和getter方法。
@EnableConfigurationProperties 用于将属性注入完毕的配置类注入spring容器
用法1
@Data
@ConfigurationProperties(prefix="test.onion")
@EnableConfigurationProperties(value = {HumanConfig.class})
public class HumanConfig {
private String name;
private String age;
}
用法2
@Component
public class TestConfig{
@Bean
@ConfigurationProperties(prefix="spring.datasource")
public Datasource genDatasource(){
return new Datasource();
}
}
@ConditionalOnProperty 如果properties属性成立,则将bean注入.
@Configuration
public class MyConfiguration{
/**
* 当properties文件中,com.onion.open=true, 或没有com.onion.open这个属性时,注入MyBean
*/
@Bean
@ConditionalOnProperty(prefix="com.onion",
name="open",
havingValue = "true",
matchIfMissing = true)
public MyBean fun() {
return new MyBean();
}
}
@ConditionalOnBean 如果存在beanA,则加载beanB.
@ConditonalOnMissingBean 如果没有beanA,则加载beanB.
@Configuration
public class BeanConfig {
// @Bean(name = "notebookPC")
public Computer computer1() {
return new Computer("笔记本电脑");
}
// @ConditionalOnBean(Computer.class)
@ConditionalOnMissingBean(Computer.class)
@Bean("notebookPC")
public Computer computer2() {
return new Computer("备用电脑");
}
}