Spring - $ \ {} не работает в @Value
Простой пример Spring@PropertySource для чтения файла свойств.
db.properties
db.driver=oracle.jdbc.driver.OracleDriver
AppConfig.java
@Configuration
@PropertySource("classpath:db.properties")
public class AppConfig {
@Value("${db.driver}")
private String driver;
Но заполнитель свойства${} не может разрешиться в@Value, если распечатать переменнуюdriver, он будет отображать строку${db.driver} напрямую вместо «oracle.jdbc.driver» .OracleDriver ».
Решение
Чтобы разрешить${} в Spring@Value, вам необходимо вручную объявить bean-компонентSTATICPropertySourcesPlaceholderConfigurer. Например :
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();
}
}
Для конфигурации XML Spring поможет вам автоматически зарегистрироватьPropertySourcesPlaceholderConfigurer.
Note
Прочтите эту Spring JIRASPR-8539
Note
Вас может заинтересовать этотSpring @PropertySource example