Как прочитать файл свойств с помощью PropertyPlaceholderConfigurer с xml и получить доступ к свойствам с помощью @Value? - PullRequest
1 голос
/ 21 мая 2019

Мне нужно читать URL-адреса из файла свойств, чтобы мне не приходилось вводить код при каждом изменении URL-адреса. Я использую проект Spring-Maven. Я использую <context:property-placeholder location="classpath:apiUrls.properties"/> в моем файле application-context.xml. Когда я пытаюсь получить доступ к свойству в классе Java с @Value("${my.property}") private String url; Я буквально получаю «$ {my.property}» в URL вместо значения свойства.

Вот ссылка: Как прочитать значения из файла свойств?

Я пытаюсь сделать это с помощью xml первым методом PropertyPlaceholderConfigurer.

В файле web.xml:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:applicationContext.xml
        </param-value>
    </context-param>

В файле applicationContext.xml:

    <context:component-scan base-package="com.api"></context:component-scan>

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

В файле свойств (файл apiUrls.properties): category.getAll=http://google.com/getSomeData

В классе Java:

@service
public class DemoCMSCategoryServiceImpl implements DemoCMSCategoryService {

    @Autowired
    RestTemplate restTemplate;

    @Value("${category.getAll}")
    private String url;
    .........
    .........
//In a function
String uri = this.url; //uri is ${my.property} not the value

Это должно было сработать, я делал это в других проектах. Я также попытался использовать @PropertySource (тогда ничего не делалось в xml), и это сработало, поэтому проблема, похоже, в части xml. Каким-то образом свойства не добавляются в контекст. Если он работает правильно, тогда uri должен быть http://google.com/getSomeData - из файла свойств. Структура каталогов проекта: Структура каталогов

...