在此示例中,以前您已经看到我们可以加载属性文件并从中读取值:如何使用Spring EL从属性文件中读取值?在此示例中,您将学习如何读取Spring EL可用的特殊属性。这些属性包括systemEnvironment和systemProperties。
该systemEnvironment属性包含运行程序的计算机上的所有环境变量。同时,systemProperties包含使用-D参数在应用程序启动时在Java中设置的所有属性。让我们看看如何在以下Spring配置文件中访问这两个属性:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="program1"> <property name="logPath" value="#{systemProperties['APP.LOG_PATH']}"/> </bean> <bean id="program2"> <property name="logPath" value="#{systemEnvironment['HOME']}"/> </bean> </beans>
在上面的配置中,我们有两个的Program。我们logPath使用其他属性源设置属性。在program1bean中,我们使用systemProperties['APP.LOG_PATH']。使用此方法时,将在-DAPP.LOG_PATH=/Users/wayan/tmp执行程序时使用将该值传递给我们的程序。从用户的主目录属性中读取program2Bean时,该logPath属性可通过systemEnvironment变量获取。
为了使Spring配置有效,您需要使用Program类。所以这是类的定义。
package org.nhooo.example.spring.el; public class Program { private String logPath; public Program() { } public String getLogPath() { return logPath; } public void setLogPath(String logPath) { this.logPath = logPath; } }
最后,让我们创建一个简单的类来执行上面的Spring配置文件并查看代码结果。
package org.nhooo.example.spring.el; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpELEnvironment { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("spel-environment.xml"); Program program1 = (Program) context.getBean("program1"); System.out.println("program.getLogPath() = " + program1.getLogPath()); Program program2 = (Program) context.getBean("program2"); System.out.println("program.getLogPath() = " + program2.getLogPath()); } }
该代码将打印以下结果:
program.getLogPath() = /Users/wayan/tmp program.getLogPath() = /Users/wayan