1、获取属性:用(:设置默认值)
@Value("${mode.cache:redis}")
private String mode;
2、当用@Value取属性的时候,SpringBoot默认是报错的。
/**
* 描 述:忽略配置不存在
* 创建时间: 2018/05/22
*/
@Configuration
public class PropertyIgnoreConfig {
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();
c.setIgnoreUnresolvablePlaceholders(true);
return c;
}
}
3、根据属性动态加载类
当application中的key/value,相等的时候加载对应的类。如果属性不存在,不会加载对应类
@Component
@ConditionalOnProperty(name = RedisMode.CAHCE_MODE_KEY,havingValue = RedisMode.CACHE_MODE_EHCACHE)
public class RedisHealthIndicator implements HealthIndicator {}
当application中的key存在spring.kafka.bootstrap-servers为true,不存在为false
@ConditionalOnProperty(prefix = "spring.kafka",name = "bootstrap-servers")
public class RedisHealthIndicator implements HealthIndicator {}
设置默认值为true,当spring.rabbitmq.addresses不存在的时候,加载对应类
@ConditionalOnExpression("'${spring.rabbitmq.addresses:true}'=='true'")
public class RabbitHealthIndicator implements HealthIndicator {