Frühling - $ \ {} funktioniert nicht in @Value
Ein einfaches Beispiel für Spring@PropertySource
zum Lesen einer Eigenschaftendatei.
db.properties
db.driver=oracle.jdbc.driver.OracleDriver
AppConfig.java
@Configuration @PropertySource("classpath:db.properties") public class AppConfig { @Value("${db.driver}") private String driver;
Der Eigenschaftsplatzhalter${}
kann jedoch nicht in@Value
aufgelöst werden. Wenn die Variabledriver
ausgedruckt wird, wird die Zeichenfolge${db.driver}
direkt anstelle von "oracle.jdbc.driver" angezeigt .OracleDriver ”.
Lösung
Um${}
in Spring@Value
aufzulösen, müssen Sie eineSTATICPropertySourcesPlaceholderConfigurer
Bean manuell deklarieren. Zum Beispiel :
AppConfig.java
import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; @Configuration @PropertySource("classpath:db.properties") public class AppConfig { @Value("${db.driver}") private String driver; @Bean public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() { return new PropertySourcesPlaceholderConfigurer(); } }
Bei der XML-Konfiguration hilft Ihnen Spring dabei,PropertySourcesPlaceholderConfigurer
automatisch zu registrieren.
Note
Lesen Sie diesen Frühling JIRASPR-8539
Note
Sie können an diesenSpring @PropertySource example interessiert sein