SpEL java.util.Properties 不起作用。马文 Tomcat 8

Doesn't work SpEL java.util.Properties . Maven Tomcat 8

我尝试在 applicationContext.xml 中将 SpEL 与 java.util.Properties 结合使用。否则我使用 maven tomcat 插件。

我的class:

public class FieldClass{
 private Properties pr;
 public Properties getProperties(){
  return this.pr;
 }
 public void setProperties(Properties properties){
  this.pr = properties;
 }  
}

我的 xml:

<bean id="field" class="com.myproject.app.FieldClass">
        <property name="pr" value="#{systemProperties['APP.LOG_PATH']}" />
    </bean>

然后我在命令行中运行 mvn -DAPP.LOG_PATH=/Users/wsaryada/tmp tomcat7:redeploy。但是我编译失败了。

我还尝试以这种方式在 pom.xml 中指定属性:

      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <configuration>
          <url>http://localhost:8080/manager/text</url>
          <server>tomcatserver</server>
          <systemProperties>
            <APP.LOG_PATH>/home/user/tmp</APP.LOG_PATH>
          </systemProperties>
        </configuration>
      </plugin>

但它也不起作用。 我也试过使用 <property name="pr" value="#{systemEnvironment['APP.LOG_PATH']}" /> 但同样的问题

FAIL - Deployed application at context path /application but context failed to start

问题出在哪里???

我评论bean后全部工作成功

更新

我更改了 Spring 而不是 class 中的属性并且部署错误消失了,但是 pr 的值变为空

Java中的 Properties 对象本质上是键值对的集合。

在 spring 中,当您注入 属性 时,您在 xml 文件中引用了它的键,并且该值被注入到您的代码中。因此,java 代码中的对象类型应反映值的任何数据类型(字符串、整数等...)。

此外,当您使用 Spring 注入属性时,有一些规则: 1) xml 中的 属性 的名称应该与 java 代码中的属性名称相同。 2) 您的 java 属性应该存在 Getters 和 Setters。 3) Getters 和 Setters 的名字应该和你的属性同名,但是在前面加上 get 或 set,例如getPr(), setPr().

如果有帮助请告诉我。