我试图使用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}”)加载相同的属性。但无法处理上述情况。任何有关如何正确配置此配置的帮助?
为了使spring评估占位符,您需要在使用类时使用PropertySourcesPlaceholderConfigurer静态@Bean方法注册 Bean @Configuration,如下所示:
PropertySourcesPlaceholderConfigurer
@Bean
@Configuration
@Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); }
根据JavaDoc:
PlaceholderConfigurerSupport的特殊化,可针对当前的Spring Environment及其PropertySources解析bean定义属性值和@Value注释中的$ {…}占位符。