Spring - $ \ {} не работает в @Value

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