SpringBoot动态获取属性和加载类

一、获取属性:用(:设置默认值)redis

@Value("${mode.cache:redis}")spring

private String mode;bootstrap

 

二、当用@Value取属性的时候,SpringBoot默认是报错的。app

/**.net

* 描 述:忽略配置不存在server

* 建立时间: 2018/05/22rabbitmq

*/get

@Configurationkafka

public class PropertyIgnoreConfig {it

@Bean

public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {

PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();

c.setIgnoreUnresolvablePlaceholders(true);

return c;

}

}

 

三、根据属性动态加载类

当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 {

相关文章
相关标签/搜索