【问题标题】:Loading Properties file is giving weird behavior加载属性文件给出了奇怪的行为
【发布时间】:2015-07-03 15:29:17
【问题描述】:

考虑这个例子

 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

【问题讨论】:

    标签: java spring properties applicationcontext


    【解决方案1】:

    您分配属性文件的方式似乎不完整。我通常使用 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 短一点。

    【讨论】:

      【解决方案2】:

      另一种解决方案:

      <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;
          }
      }
      

      【讨论】:

        【解决方案3】:

        我不得不注入另一个知道如何解析属性的 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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-28
          • 2013-08-17
          • 1970-01-01
          • 2017-04-10
          • 1970-01-01
          • 2013-06-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多