在这个例子中,您将学习如何使用Spring Expression Language访问类范围的方法或常量。要访问类范围的方法或常量T(),例如,您将需要使用Spring EL的运算符T(java.lang.Math)。该运算符将使我们能够访问给定类上的静态方法和常量。作为示例,我们可以Math.PI在Spring EL中访问like T(java.lang.Math).PI。
就像访问静态常量一样,我们也可以以相同的方式访问静态方法。例如,我们可以Math.random()像这样在Spring EL中调用该方法T(java.lang.Math).random()。
现在,让我们看看如何在spring配置文件中执行这些操作。在这种配置中,我们创建一个名为绿豆myBean具有如属性randomNumber,pi和name。
<?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="myBean"> <property name="randomNumber" value="#{T(java.lang.Math).random()}"/> <property name="pi" value="#{T(java.lang.Math).PI}"/> <property name="name" value="#{T(org.nhooo.example.spring.el.MyOtherBean).BEAN_NAME}"/> </bean> </beans>
这里是运行演示的spring配置的bean类和应用程序类。
package org.nhooo.example.spring.el; public class MyOtherBean { public static final String BEAN_NAME = "MyOtherBean"; private String randomNumber; private String pi; private String name; public void setRandomNumber(String randomNumber) { this.randomNumber = randomNumber; } public String getRandomNumber() { return randomNumber; } public void setPi(String pi) { this.pi = pi; } public String getPi() { return pi; } public void setName(String name) { this.name = name; } public String getName() { return name; } }
package org.nhooo.example.spring.el; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpELStaticDemo { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("spring-spel-static.xml"); MyOtherBean bean = (MyOtherBean) context.getBean("myBean"); System.out.println("bean.getRandomNumber() = " + bean.getRandomNumber()); System.out.println("bean.getPi() = " + bean.getPi()); System.out.println("bean.getName() = " + bean.getName()); } }
执行程序时,您将得到以下结果作为输出:
bean.getRandomNumber() = 0.7173165965231882 bean.getPi() = 3.141592653589793 bean.getName() = MyOtherBean