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

时间:2017-05-23 19:55:33

标签: spring spring-mvc 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}”)加载相同的属性。但不是在处理上述情况。 有关如何正确配置的任何帮助?

1 个答案:

答案 0 :(得分:1)

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

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

根据JavaDoc

  

PlaceholderConfigurerSupport的专业化,它针对当前Spring环境及其PropertySources集解析bean定义属性值和@Value注释中的$ {...}占位符。