一尘不染

从application.yml设置类级别的注释值

spring-boot

我试图使用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}”)加载相同的属性。但无法处理上述情况。任何有关如何正确配置此配置的帮助?


阅读 530

收藏
2020-05-30

共1个答案

一尘不染

为了使spring评估占位符,您需要在使用类时使用PropertySourcesPlaceholderConfigurer静态@Bean方法注册
Bean @Configuration,如下所示:

@Bean 
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}

根据JavaDoc

PlaceholderConfigurerSupport的特殊化,可针对当前的Spring
Environment及其PropertySources解析bean定义属性值和@Value注释中的$ {…}占位符。

2020-05-30