我的applicationContext.xml
<context:property-placeholder location="classpath*:*.properties" />
<bean id="clientPreferencesManager" class="pl.bildpresse.bildchat2.business.ClientPreferencesManager" >
<property name="clientApiUrl" value="${clientapi.url}" />
</bean>
通过autowire可以做同样的事情吗?类似的东西:
@Autowired
@Qualifier("${clientapi.url}")
public void setClientApiUrl(String clientApiUrl) {
this.clientApiUrl = clientApiUrl;
}
答案 0 :(得分:78)
您可以使用@Value
:
@Value("${clientapi.url}")
public void setClientApiUrl(String clientApiUrl) {
this.clientApiUrl = clientApiUrl;
}
答案 1 :(得分:8)
我花了一些时间才明白为什么它不起作用。我总是使用#
代替$
。我总是收到消息:
EL1008E:(pos 0): Field or property 'secretkey' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'
只需改变它:
@Value("#{secretkey}')
到
@Value('${secretkey}')
我希望这能节省一些时间。
答案 2 :(得分:5)
确定。刚刚得到它。你需要添加@Autowired 类似的东西:
@Autowired
@Value("${clientapi.url}")
private StringValueResolver resolver;
我正在使用spring 3.0.0.RELEASE
干杯
答案 3 :(得分:2)
对于spring 3.0,正确的方法是显示 - 使用@Value("${expression}")
对于3.0之前的春季,您可以尝试:
@Autowired
private StringValueResolver resolver;
这里没有上下文初始化问题,但我不确定它是否有效。使用解析器,您可以解析属性。
答案 4 :(得分:1)
我的解决方案是使用
<context:property-override location="classpath:clientapi.properties" />
然后在 clientapi.properties 文件
中clientPreferencesManager.clientApiUrl=http://localhost:8084/ClientAPI/resources/
这个也很好