【发布时间】:2017-07-20 05:44:36
【问题描述】:
我有一个属性文件名为 documentum,内容如下
#test
dfs.repositoryName = CUDO
dfs.contextRoot = http://13.209.9.28:9080/services
dfs.username = 1234
dfs.password = fx8888
dfs.moduleName = core
我已经在 beans.xml 中配置了这个文件
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="false" />
<property name="locations">
<list>
<value>file:${app.home}/documentum.properties</value>
</list>
</property>
</bean>
现在我想做这样的事情,但我不知道如何在我的 java 代码中实现这一点。
String repository = ${dfs.repositoryName};
如果我在同一个类中使用 @value 注释,那么它工作正常,但如果我像这样用作单独的类
package au.com.fxa.sfdc.custdocs.util;
import org.springframework.beans.factory.annotation.Value;
public class DocumentumConfigUtil {
@Value("${dfs.repositoryName}")
private String repositoryName;
@Value("${dfs.contextRoot}")
private String contextRoot;
@Value("${dfs.username}")
private String username;
@Value("${dfs.password}")
private String password;
@Value("${dfs.module}")
private String module;
public String getRepositoryName() {
return repositoryName;
}
public String getContextRoot() {
return contextRoot;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getModule() {
return module;
}
}
然后创建这个类的一个对象并尝试通过getter方法访问它给我空值。
【问题讨论】:
-
我可以看到你在谈论 spring 而不是 web 服务。如果我是对的,请查找 @Value 注释。
-
是的,很抱歉使用 apache cxf 和 spring 框架创建 Web 服务。
-
@Valuelike@Autowired仅适用于 Spring 托管 bean。如果你自己创建一个实例,spring 将对该 bean 一无所知,因此忽略@Value。
标签: java spring properties