加载属性文件会出现奇怪的行为
Loading Properties file is giving weird behavior
考虑这个例子
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>
当我调试什么设置时,我看到
如何为 emailProperties
加载 Properties
?
您分配 属性 文件的方式似乎不完整。我通常使用 util 函数。将此添加到您的上下文 xml 文件命名空间:
xmlns:util="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>
也许在 Spring 4 中简化了一些事情,但这就是您在 3 和更早版本中的做法。它比使用 org.springframework.beans.factory.config.PropertiesFactoryBean.
短一点
我不得不注入另一个知道如何解析属性的 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>
另一个解决方案:
<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;
}
}
考虑这个例子
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>
当我调试什么设置时,我看到
如何为 emailProperties
加载 Properties
?
您分配 属性 文件的方式似乎不完整。我通常使用 util 函数。将此添加到您的上下文 xml 文件命名空间:
xmlns:util="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>
也许在 Spring 4 中简化了一些事情,但这就是您在 3 和更早版本中的做法。它比使用 org.springframework.beans.factory.config.PropertiesFactoryBean.
短一点我不得不注入另一个知道如何解析属性的 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>
另一个解决方案:
<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;
}
}