Spring Expression Language 简明教程

Spring SpEL - XML Based Configuration

SpEL 表达式可用于基于 XML 的 Bean 配置

Syntax

以下是使用 XML 配置中表达式的示例。

<bean id="randomNumberGenerator" class="com.tutorialspoint.RandomNumberGenerator">
   <property name="randomNumber" value="#{ T(java.lang.Math).random() * 100.0 }"/>
</bean>

在此,我们已指定要使用 Math.random() 方法填入的属性。对于类,其名称应该是完全限定的。我们还可以使用 systemProperties 作为系统变量。它是一个内置变量。

<property name="country" value="#{ systemProperties['user.country'] }"/>

我们还可以在 SpEL 表达式中使用另一个 Bean,如下所示:

<property name="id" value="#{ randomNumberGenerator.randomNumber }"/>

以下示例显示了各种使用案例。

Example

让我们更新在 Spring SpEL - Create Project 章节创建的项目。我们添加/更新了以下文件:

  1. RandomNumberGenerator.java − 一个随机数生成器类。

  2. Employee.java - 一个员工类。

  3. MainApp.java - 要运行和测试的主应用。

  4. applicationcontext.xml − Beans 配置文件。

下面是 RandomNumberGenerator.java 文件的内容 −

package com.tutorialspoint;
public class RandomNumberGenerator {
   private int randomNumber;
   public int getRandomNumber() {
      return randomNumber;
   }
   public void setRandomNumber(int randomNumber) {
      this.randomNumber = randomNumber;
   }
}

以下 Employee.java 文件的内容:

package com.tutorialspoint;

public class Employee {
   private int id;
   private String name;
   private String country;

   public int getId() {
      return id;
   }
   public void setId(int id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getCountry() {
      return country;
   }
   public void setCountry(String country) {
      this.country = country;
   }
   @Override
   public String toString() {
      return "[" + id + ", " + name + ", " + country + "]";
   }
}

以下 MainApp.java 文件的内容:

package com.tutorialspoint;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
   public static void main(String[] args) {
      ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationcontext.xml");
      Employee employee = (Employee) applicationContext.getBean("employee");
      System.out.println(employee);
   }
}

下面是 applicationcontext.xml 文件的内容 −

<?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-3.0.xsd">

   <bean id="randomNumberGenerator" class="com.tutorialspoint.RandomNumberGenerator">
      <property name="randomNumber" value="#{ T(java.lang.Math).random() * 100.0 }"/>
   </bean>
   <bean id="employee" class="com.tutorialspoint.Employee">
      <property name="id" value="#{ randomNumberGenerator.randomNumber }"/>
      <property name="country" value="#{ systemProperties['user.country'] }"/>
      <property name="name" value="Mahesh"/>
   </bean>
</beans>

Output

[84, Mahesh, IN]