2016-03-30 18 views
0

diğer paketlerde enjekte almıyorum@value ben özellikler sınıf yolunda mevcut dosya yüklemeye çalışıyorum Bahar tanımlanan bir özellik kaynağına sahip

@Configuration 
@PropertySource(name = "props", value = "classpath:prod.properties") 

public class PropertyPlaceholderConfigurerConfig { 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer propertyConfigurer() { 

     PropertySourcesPlaceholderConfigurer ppc = new PropertySourcesPlaceholderConfigurer(); 

     Resource[] resources = new ClassPathResource[] 

     { new ClassPathResource("prod.properties") }; 

     ppc.setLocations(resources); 

     ppc.setIgnoreUnresolvablePlaceholders(true); 

     return ppc; 

    } 

    @Value("${DATABASE_NAME}") private String DATABASE_NAME; 

    @Bean 
    public String test() { 
    System.out.println(DATABASE_NAME); 

    } 
} 

Benim prod.properties dosya 1 giriş var

DATABASE_NAME = proddb_123 testi() fasulye baskılar Şimdi

proddb_123 olarak

Karşılıklı

İki sorun ben çalışıyorum farklı bir pakette başka sınıf,

@value ("$ {DATABASE_NAME}") Özel String DATABASE_NAME enjekte var

  1. olduğu;

    Ama bu değeri @PropertySouce yapılandırması tanımlanır biri ve depolama-gradle gibi başka projedir ben WebApplication-gradle gibi farklı gradle projeler var "$ {DATABASE_NAME}"

  2. zaman. Depolama alanı projesinde mevcut olan herhangi bir sınıfında DATABASE_NAME uygulamasını enjekte edebilir miyim? Eğer @value ($ {DATABASE_NAME} ") ayrıca @PropertySource ek açıklama YSE zorundayız. Başka bir seçenek @PropertySource ek açıklamaları kaldırmak ve Uygulamamızla içinde olmaktır enjekte etmek istediğiniz diğer sınıflarında

cevap

0

-context.xml sınıf org.springframework.beans.factory.condig.PropertyPlaceholderConfigurer bir fasulye tanımladı ve özellik konumları için sınıf yolu için bir değer ekleyin: prod.properties

+0

Benim Yay yapılandırması java ek açıklama tabanlı bir yapılandırmadır. Lütfen bana anlatabilmem için bana bir pasaj sağlayın –

+0

PropertySouce yapılandırmalarını kaldırdım ve Profile temel alınarak PropertyPlaceholderConfigurer için fasulye oluşturdum. Değerleri ayrı bir Bean'e (PropertyBean.java) dönüştürdüm ve daha sonra bu özellikleri kullanmak istediğimde PropertyBean'ı enjekte ettim ve ondan kullandım. Teşekkürler –

İlgili konular