Мне нужно читать 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
- из файла свойств.
Структура каталогов проекта: Структура каталогов