Spring教程 - Spring表达式语言
Spring教程 - Spring表达式语言
Spring 3.0引入了一个强大的表达式语言称为Spring表达式语言,或Spring EL。
Spring表达式语言,通过XML或注释,在bean创建时间期间被评估或执行。
春天表达语言hello世界
在下面的代码中展示了如何使用Spring表达式语言注入String,整数和bean到属性,在XML和注释。
为了使用Spring表达式语言,我们需要添加以下jar 对pom.xml文件的依赖。
...
<properties>
<spring.version>3.0.5.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependencies>
...
Java Bean
下面的代码定义了两个Java bean,后面我们将使用Spring Expression Language在XML和注释中将值注入属性。
服务器Java Bean。
package com.www.w3cschool.cnmon;
public class Server {
private Item item;
private String itemName;
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
@Override
public String toString() {
return "Server [item=" + item + ", itemName=" + itemName + "]";
}
}
项目Java Bean。
package com.www.w3cschool.cnmon;
public class Item {
private String name;
private int qty;
public String getName() {
return name;
}
@Override
public String toString() {
return "Item [name=" + name + ", qty=" + qty + "]";
}
public int getQty() {
return qty;
}
public void setQty(int qty) {
this.qty = qty;
}
public void setName(String name) {
this.name = name;
}
}
XML中的Spring EL
下面的代码显示了如何在XML中使用Spring EL。
下面的代码显示了如何在XML中使用Spring EL。...
<bean id="itemBean" class="com.www.w3cschool.cnmon.Item">
<property name="name" value="itemA" />
<property name="qty" value="10" />
</bean>
然后,我们通过重用Item Bean中的值来创建XML中的服务器bean。
Spring表达式语言用#{expression}括起来。以下代码引用Item bean的值。它将itemBean分配给item,将itemBean.name分配给itemName。 itemBean.name 的值为itemA。
<bean id="myServer" class="com.www.w3cschool.cnmon.Server">
<property name="item" value="#{itemBean}" />
<property name="itemName" value="#{itemBean.name}" />
</bean>
完整配置文件。
<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="itemBean" class="com.www.w3cschool.cnmon.Item">
<property name="name" value="itemA" />
<property name="qty" value="10" />
</bean>
<bean id="myServer" class="com.www.w3cschool.cnmon.Server">
<property name="item" value="#{itemBean}" />
<property name="itemName" value="#{itemBean.name}" />
</bean>
</beans>
Download Java2s_Spring_EL_XML.zip
Spring EL的注释
以下示例显示如何在注释中使用Spring表达式语言。
首先,我们定义一个Java Bean项目,并用 Component 注释标记它。对于其属性,我们使用 Value 注释来分配它们的值
package com.www.w3cschool.cnmon;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("itemBean")
public class Item {
@Value("itemA") //inject String directly
private String name;
@Value("10") //inject interger directly
private int qty;
public String getName() {
return name;
}
@Override
public String toString() {
return "Item [name=" + name + ", qty=" + qty + "]";
}
public int getQty() {
return qty;
}
public void setQty(int qty) {
this.qty = qty;
}
public void setName(String name) {
this.name = name;
}
}
然后,我们定义一个服务器Java bean,并用 Component 注释来标记它。当定义Server的属性时,我们使用从Item bean定义的 Value 注释的值。
package com.www.w3cschool.cnmon;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("myServer")
public class Server {
@Value("#{itemBean}")
private Item item;
@Value("#{itemBean.name}")
private String itemName;
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
@Override
public String toString() {
return "Server [item=" + item + ", itemName=" + itemName + "]";
}
}
最后,我们必须在xml文件中启用自动组件扫描。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.www.w3cschool.cnmon" /> </beans>
例子
以下代码显示了如何运行上面的代码。
package com.www.w3cschool.cnmon;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml");
Server obj = (Server) context.getBean("myServer");
System.out.println(obj);
}
}
上面的代码生成以下结果。

Download Java2s_spring_EL_Annotation.zip
Spring表达式语言中的集合
以下代码显示了如何在Spring表达式语言中使用集合。
首先,定义一个包含集合的Java bean。
package com.www.w3cschool.cnmon;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Component;
@Component("testBean")
public class Test {
private Map<String, String> map;
private List<String> list;
public Test() {
map = new HashMap<String, String>();
map.put("MapA", "This is A");
map.put("MapB", "This is B");
map.put("MapC", "This is C");
list = new ArrayList<String>();
list.add("List0");
list.add("List1");
list.add("List2");
}
}
然后,使用表达式语言中的集合。
package com.www.w3cschool.cnmon;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("customerBean")
public class Customer {
@Value("#{testBean.map["MapA"]}")
private String mapA;
@Value("#{testBean.list[0]}")
private String list;
}
在xml配置文件中使用相同的设置。
<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="customerBean" class="com.www.w3cschool.cnmon.Customer">
<property name="mapA" value="#{testBean.map["MapA"]}" />
<property name="list" value="#{testBean.list[0]}" />
</bean>
<bean id="testBean" class="com.www.w3cschool.cnmon.Test" />
</beans>

免费 AI IDE


更多建议: