Aufgrund unseres recht komplexen properties
-Datei-Setups können wir nicht einfach @PropertySource
verwenden.PropertySourcesPlaceholderConfigurer und SPEL?
Hier ist die Eigenschaften-Datei:
connection.http.connectTimeout=15000
#connection.http.readTimeout=${connection.http.connectTimeout}
connection.http.readTimeout=#{30*1000}
Die zweite Zeile noch und stellen readTimeout
-15.000, aber
Die Bean-Klassen ist der Wert 0. nur an Ort und Stelle mit der dritten Zeile funktionieren würde:
@Component
@ConfigurationProperties("connection")
public class ConnectionConfig {
@NestedConfigurationProperty
private ConnectionSourceConfig http;
public ConnectionSourceConfig getHttp() {
return http;
}
public void setHttp(ConnectionSourceConfig http) {
this.http = http;
}
}
public class ConnectionSourceConfig {
private long connectTimeout;
private long readTimeout;
public long getConnectTimeout() {
return connectTimeout;
}
public void setConnectTimeout(long connectTimeout) {
this.connectTimeout = connectTimeout;
}
public long getReadTimeout() {
return readTimeout;
}
public void setReadTimeout(long readTimeout) {
this.readTimeout = readTimeout;
}
}
Mit einem PropertySourcesPlaceholderConfigurer
scheint Spel von Arbeits zu stoppen:
@Configuration
public class BaseAppConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer properties(Environment environment) throws IOException {
String env = getEnvProperty(environment);
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setLocations(getPropertiesFiles(env));
configurer.setIgnoreResourceNotFound(true);
return configurer;
}
habe ich versucht, einen schicken PropertySourcesPlaceholderConfigurer
, aber convertPropertyValue()
nie aufgerufen:
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer() {
@Override
protected String convertPropertyValue(String originalValue) {
System.out.println("Parse " + originalValue);
return super.convertPropertyValue(originalValue);
}
};
Ich habe versucht, zu schauen, wie Spring seine Arbeit tut und es scheint, dass es mit s arbeitet. Ich sehe jedoch nicht, wie ich darin eins weben könnte.
Aber vielleicht einen Fehler in Bezug auf Spring Verarbeitung Lebenszyklus Ich mache ...
Oh Junge, so eine einfache Antwort! Das habe ich komplett "vergessen". Und während ich das sage schaue einfach auf mein Eigenschaften-Beispiel .... Es war dort ....... Großartiger blonder Moment .......... – sjngm
Es war mir eine Freude in einem so schwierigen Moment zu helfen:) –