Spring Java-basierte Konfiguration mit statischen Methode
kann einer bitte um Rat, warum müssen wir erklären PropertySourcesPlaceholderConfigurer bean mit einem statische Methode ? Ich habe gerade herausgefunden, dass wenn ich nicht statische, für unten dann die url festgelegt werden, um null-Wert statt aus property-Datei -
@Value("${spring.datasource.url}")
private String url;
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfig(String profile) {
String propertyFileName = "application_"+profile+".properties";
System.out.println(propertyFileName);
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setLocation(new ClassPathResource(propertyFileName));
return configurer;
}
@Bean
@Profile("local")
public static String localProfile(){
return "local";
}
@Bean
@Profile("prod")
public static String prodProfile(){
return "prod";
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
PropertySourcesPlaceholderConfigurer
Objekte sind verantwortlich für die Lösung von@Value
Anmerkungen gegen die aktuelle Frühjahr-Umgebung und die entsprechenden PropertySources.PropertySourcesPlaceholderConfigurer
Klasse implementiertBeanFactoryPostProcessor
. In der container-Lebenszyklus, einBeanFactoryPostProcessor
Objekt instanziiert früher als ein Objekt der@Configuration
-annotierten Klasse.Wenn Sie
@Configuration
-annotierten Klasse mit Instanz-Methode der Rückkehr einePropertySourcesPlaceholderConfigurer
Objekt, dann wird der container kann nicht instanziiert, diePropertySourcesPlaceholderConfigurer
Objekt ohne Instanziierung der@Configuration
-annotierten class-Objekt selbst. In diesem Fall@Value
kann nicht aufgelöst werden, da diePropertySourcesPlaceholderConfigurer
Objekt existiert nicht im moment der Instanziierung des Objekts von@Configuration
-annotierten Klasse. So@Value
-annotierten Feld hat den Standardwertnull
.Finden Sie in der "Bootstrapping" - Teil der
@Bean
javadoc für weitere Informationen.