我必须从属性文件中读取url,因此不必每次更改url时都输入代码。我正在使用spring-maven项目。
我在application-context.xml文件中使用<context:property-placeholder location="classpath:apiUrls.properties"/>
。
当我尝试使用@Value("${my.property}")
访问java类中的属性时
private String url;
我从字面上得到的是“ $ {my.property}”,而不是属性的值。
以下是链接:How to read values from properties file?
我正在使用PropertyPlaceholderConfigurer的第一种方法使用xml进行尝试。
在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
-来自属性文件。
项目的目录结构为:Directory Structure