2013-01-17 18 views
10

Fasulyeimi oluşturmak için Spring Java config kullanıyorum. Ancak bu fasulye 2 uygulama için ortaktır. Her ikisi de bir özellik dosyası abc.properties var, ancak farklı sınıf yolu konumlarına sahip. i sonra çalışır@PropertySource içinde classpath joker karakteri

@PropertySource("classpath:/app1/abc.properties") 

gibi açık sınıf yolunu koyduğunuzda ama

@PropertySource("classpath:/**/abc.properties") 

gibi joker kullanmaya çalıştığınızda o zaman çalışmaz. Birçok joker karakter kombinasyonunu deniyorum ama hala çalışmıyor. Joker karakter @ProeprtySource içinde çalışıyor @Configurations ile işaretlenmiş sınıflanmış özelliklere okunmanın başka bir yolu var mı?

cevap

13

@PropertySource API: Resource location wildcards (e.g. **/*.properties) are not permitted; each location must evaluate to exactly one .properties resource.

geçici çözüm: deneyin

@Configuration 
public class Test { 

    @Bean 
    public PropertyPlaceholderConfigurer getPropertyPlaceholderConfigurer() 
      throws IOException { 
     PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); 
     ppc.setLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/**/abc.properties")); 
     return ppc; 
    } 
+1

ekleme 'static' değiştirici dağıtım sırasında verilen uyarı önleyecektir '@ Autowired',' @ Resource' ve '@ PostConstruct' gibi ek açıklamaların '@ Configuration' sınıfının bildirgesinde işlenememesi Bu konteyner yaşam döngüsü sorunlarından kaçınmak için 'statik' değiştiriciyi bu yönteme ekleyin; javadoc, tüm ayrıntılar için. " Ama Teşekkürler, bu bir çekicilik gibi çalıştı. –

6

Addidtionally dmay için geçici çözüm:

Bahar 3.1 PropertySourcesPlaceholderConfigurer PropertyPlaceholderConfigurer üzerinde tercihli kullanılmalı ve fasulye statik olması gerektiğinden . . Bean` yöntem Test.getPropertyPlaceholderConfigurer statik olmayan ve Spring'in BeanFactoryPostProcessor arayüzüne atanabilir bir nesne döndürür @ `Bu neden olur - 310: "ConfigurationClassEnhancer:

@Configuration 
public class PropertiesConfig { 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() { 
    PropertySourcesPlaceholderConfigurer propertyConfigurer = new PropertySourcesPlaceholderConfigurer(); 
    propertyConfigurer.setLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/**/abc.properties")); 
    return propertyConfigurer; 
    } 

} 
+1

+1 Günümü kurtardınız – sjngm

+0

Bu, "İşlenmeyen özel durum türü IOException" ifadesini gösterir – Lucky