我试图使用allication.yaml将我的类级别注释配置外部化。但春天没有加载它。知道怎么做吗?
这是我的服务类我正在尝试设置
@Service
@DefaultProperties(threadPoolProperties = {
@HystrixProperty(name = "coreSize", value =
"${cyclone.hystrix.lease.thread.coreSize}") })
public class LeaseService {
}
和application.yml
cyclone:
hystrix:
lease:
thread:
coreSize: 10
收到错误 -
java.lang.IllegalArgumentException: bad property value. property name 'coreSize'. Expected int value, actual = ${cyclone.hystrix.lease.thread.coreSize}
我可以使用@Value(“$ {cyclone.hystrix.lease.thread.coreSize}”)加载相同的属性。但不是在处理上述情况。 有关如何正确配置的任何帮助?
答案 0 :(得分:1)
为了使spring评估占位符,您需要在使用PropertySourcesPlaceholderConfigurer
类时使用静态@Bean
方法注册@Configuration
bean,如下所示:
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
根据JavaDoc:
PlaceholderConfigurerSupport的专业化,它针对当前Spring环境及其PropertySources集解析bean定义属性值和@Value注释中的$ {...}占位符。