在前面的两个示例中,您已经了解了如何使用[]Spring EL中的方括号运算符访问集合的成员和访问映射元素。在此示例中,您将看到如何使用[]运算符从属性文件或中读取值java.util.Properties。
假设我们有一个名为的数据库属性文件,database.properties其中包含以下条目:
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost/nhooo jdbc.username=root jdbc.password=secret
首先,让我们创建spring配置文件。在此配置中,我们将使用<util:properties>将属性配置加载到Spring中。然后,我们将使用Spring EL访问此属性的值,并将其分配给某些bean的属性。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <util:properties id="database" location="classpath:database.properties"/> <bean id="dataSource"> <property name="driverClassName" value="#{database['jdbc.driverClassName']}"/> <property name="url" value="#{database['jdbc.url']}"/> <property name="username" value="#{database['jdbc.username']}"/> <property name="password" value="#{database['jdbc.password']}"/> </bean> </beans>
要从属性文件中读取值,您所要做的与我们访问映射对象元素的方式相同。我们将属性名称作为键传递给Spring EL。
<property name="driverClassName" value="#{database['jdbc.driverClassName']}"/>
所述MyDataSource类是虚数据源对象。它有一些属性,如driverClassName,url,username和password。这是使用JDBC驱动程序连接数据库的常用参数。为简单起见,我们从类中删除了获取器和设置器。
package org.nhooo.example.spring.el; public class MyDataSource { private String driverClassName; private String url; private String username; private String password; // Getters & Setters }
和往常一样,要运行上面的Spring配置,我们将需要创建一个主类来加载和执行应用程序上下文。此类将从应用程序上下文中获取dataSource bean,并打印出其属性,这些属性的值是从名为database.properties的属性文件中读取的。
package org.nhooo.example.spring.el; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpELPropertiesExample { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("spel-properties.xml"); MyDataSource dataSource = (MyDataSource) context.getBean("dataSource"); System.out.println("driverClassName = " + dataSource.getDriverClassName()); System.out.println("url = " + dataSource.getUrl()); System.out.println("username = " + dataSource.getUsername()); System.out.println("password = " + dataSource.getPassword()); } }
这是运行代码片段时得到的结果:
driverClassName = com.mysql.jdbc.Driver url = jdbc:mysql://localhost/nhooo username = root password = secret