如何将动态值设置为@PropertySource?

时间:2013-12-16 12:55:33

标签: spring spring-mvc

我想使用@PropertySource注释设置动态属性源值。任何人都可以告诉我如何实现这一目标吗?对于下面我有动态传递属性文件名。

@Configuration
@PropertySource("classpath:message.properties")
public abstract class AbstractCommonAMQPConfiguration {

        @Value("${cust.name}")
    private String custName;

        @Value("${cust.id}")
    private String custId;

}

2 个答案:

答案 0 :(得分:2)

我不确定如何使用@PropertySource,但您可以通过编程方式定义PropertySourcesPlaceholderConfigurer

   private int some_value = 1;

   @Bean
   public static PropertySourcesPlaceholderConfigurer properties() {
        PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
        propertySourcesPlaceholderConfigurer.setLocation(new ClassPathResource("test" + some_value + ".properties"));
        return propertySourcesPlaceholderConfigurer;
    }

答案 1 :(得分:0)

如果您想在测试期间使用这些属性,则可以利用新功能(从Spring Framework 5.2.5和Spring Boot 2.2.6开始):

@DynamicPropertySource
static void dynamicProperties(DynamicPropertyRegistry registry) {
    registry.add("cust.name", "some property");
}