考虑这个例子
public class EmailSender {
private Properties emailProperties;
public Properties getEmailProperties() {
return emailProperties;
}
public void setEmailProperties(Properties emailProperties) {
this.emailProperties = emailProperties;
}
在applicationContext.xml
我有类似
<bean name="emailSender" class="com.api.email.EmailSender">
<property name="emailProperties" value="classpath*:email.properties"/>
</bean>
当我调试什么设置时,我看到了
如何为Properties
加载emailProperties
?
答案 0 :(得分:1)
我必须注入另一个知道如何解析Properties的bean。以下为我工作
<bean id="emailProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:email.properties"/>
</bean>
<bean name="emailSender" class="com.api.email.EmailSender">
<property name="emailProperties" ref="emailProperties"/>
</bean>
答案 1 :(得分:0)
分配属性文件的方式似乎不完整。我通常使用util函数。将其添加到上下文xml文件命名空间:
的xmlns:UTIL =&#34; HTTP://www.springframework.org/schema/util"
然后声明你的属性文件:
<util:properties
id="emailProperties"
location="classpath:/app.properties"/>
并设置bean值:
<bean name="emailSender" class="com.api.email.EmailSender">
<property name="emailProperties" ref="emailProperties"/>
</bean>
也许在春季4中已经简化了一些事情,但这就是你在3及更早版本中的表现。它比使用org.springframework.beans.factory.config.PropertiesFactoryBean短了十分之一。
答案 2 :(得分:0)
看看这篇文章是否有帮助,但您可能需要更改注入bean的方式 http://www.javabeat.net/spring-load-properties-file-value-annotation/
答案 3 :(得分:0)
Another solution:
<context:property-placeholder location="classpath*:email.properties" />
<bean class="com.test.EmailSender" >
<property name="prop1" value="${mail.prop1}" />
<property name="prop2" value="${mail.prop2}" />
</bean>
-
public class EmailSender {
private String prop1;
private String prop2;
public String getProp1() {
return prop1;
}
public void setProp1(String prop1) {
this.prop1 = prop1;
}
public String getProp2() {
return prop2;
}
public void setProp2(String prop2) {
this.prop2 = prop2;
}
}