2013-12-16 94 views
1

我想使用@PropertySource註釋來設置動態屬性源值。任何人都可以告訴我如何做到這一點?對於下面我有動態傳遞屬性文件名。如何將動態值設置爲@PropertySource?

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

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

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

} 
+0

只需使用佔位符,要麼定義它們的環境或JVM性能(-D),這是隻有這樣你才能動態地指定它。但爲什麼?爲什麼不把它放在一個衆所周知的位置,並從那裏加載... –

+0

感謝您的反應Deinum。加載不同屬性文件的原因是,我有5個服務(1,2,... 5)對於每個服務屬性值都是不同的。就像,對於第一個服務我想要加載service1.properties,等等。這裏只有值是不同的,但是bean的屬性是相同的。所以,爲了達到這個目的,我嘗試使用註解加載動態屬性文件。你能否建議我們是否有其他方法? – Pand005

回答

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; 
    } 
相關問題