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
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}"
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
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 –
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 –