ich eine Eigenschaft Quelle im Frühjahr definiert habe, wo ich eine Eigenschaft zu laden versuchen in dem Classpath vorhanden Datei@Value nicht in anderen Paketen injiziert bekommen
@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);
}
}
Meine prod.properties Datei hat 1 Eintrag
DATABASE_NAME = proddb_123
nun in dem Test() bean druckt als proddb_123
("$ {DATABASE_NAME}") private String DATABASE_NAMEZwei Probleme, die ich bin vor ist
ich eine andere Klasse in einem anderen Paket, wo ich es versuche
@Value zu injizieren;
Aber der Wert dieser ist immer „$ {DATABASE_NAME}“
ich verschiedene gradle Projekte wie Webapplikation-gradle haben, ist ein wo die @PropertySouce Konfiguration definiert ist, und eine andere Projekt wie Storage-gradle. Kann ich den DATABASE_NAME in eine Klasse injizieren, die im Storage-Gradle-Projekt vorhanden ist.
Meine Spring-Konfiguration ist Java-Annotation-basierte Konfiguration Bitte geben Sie mir einen Ausschnitt davon, damit ich das verstehen kann. " –
Ich habe die PropertySouce-Konfigurationen entfernt und basierend auf Profile Beans für PropertyPlaceholderConfigurer erstellt. Später habe ich al l die Werte in eine separate Bean (PropertyBean.java) und dann wo immer ich diese Eigenschaften verwenden wollte, habe ich gerade die PropertyBean injiziert und daraus verwendet. Vielen Dank –