Свойство из файла не найдено с Spring

Я сталкиваюсь с проблемой, когда я не могу получить доступ к свойству Spring из моего кода Java.

Вот контекст:

<context:property-placeholder ignore-resource-not-found="false"
    location="file:/${setup.properties.directory}/setup.properties"/>

setup.propertiesФайл выглядит следующим образом:

paymentProvider.x.url=x

Код является:

SpringContext.INSTANCE.getEnvironment()
                    .getProperty("paymentProvider.x.url");

Ошибки во время выполнения отсутствуют. Тем не менее, результат кода выше дает null.

Кто-нибудь знает почему?

2 ответа

  1. Только

    @Configuration
    @PropertySource("file:/${setup.properties.directory}/setup.properties")
    public class SpringContext {
    public static final ApplicationContext PROPERTIES_INSTANCE = new AnnotationConfigApplicationContext
            (SpringContext.class);
    }
    

    работать на меня.

  2. Изменить context:property-placeholderконфигурацию как:

    <context:property-placeholder location="classpath:setup.properties" />
    

    Если вы хотите получить доступ к этому значению свойств на уровне класса, используйте одну аннотацию, например:

    @PropertySource(value = { "classpath:setup.properties" })
    

    И читать значения свойств autowire Environmentвнутри этого класса, как:

    @Autowired
    private Environment environment;
    

    И, наконец, вы можете получить доступ, как:

    environment.getRequiredProperty("paymentProvider.x.url");