1. SpEL: Spring Expression Language, Spring的表达式语言。
2. SpEL的属性注入(Spring3.0以后), 语法: #{SpEL}。
3. SpEL的使用
4. SpEL实例
4.1. 新建一个名为SpringDI_SpEL的Java工程, 拷入Spring相关包
4.2. 创建Teacher.java
package com.lywgames.bean;
public class Teacher {
private int id;
private String name;
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;
}
@Override
public String toString() {
return "Teacher [id=" + id + ", name=" + name + "]";
}
}
4.3. 创建Clazz.java
package com.lywgames.bean;
public class Clazz {
private Teacher teacher;
private int teacherId;
private String teacherName;
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
public int getTeacherId() {
return teacherId;
}
public void setTeacherId(int teacherId) {
this.teacherId = teacherId;
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
@Override
public String toString() {
return "Clazz [teacher=" + teacher + ", teacherId=" + teacherId + ", teacherName=" + teacherName + "]";
}
}
4.4. 创建Test.java
package com.lywgames;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.lywgames.bean.Clazz;
import com.lywgames.bean.Teacher;
public class Test {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println(context.getBean(Teacher.class).toString());
System.out.println(context.getBean(Clazz.class).toString());
context.close();
}
}
4.5. 在src目录下创建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.xsd">
<!-- 表达式注入 -->
<bean id="teacher" class="com.lywgames.bean.Teacher">
<property name="id" value="#{901}"></property>
<property name="name" value="#{'xiaocui'}"></property>
</bean>
<bean id="clazz" class="com.lywgames.bean.Clazz">
<property name="teacher" value="#{teacher}"></property>
<!-- 调用其它类的方法给我们的类属性注入值 -->
<property name="teacherId" value="#{teacher.getId()}"></property>
<!-- 调用其它类的属性给我们的类属性注入值 -->
<property name="teacherName" value="#{teacher.name}"></property>
</bean>
</beans>
4.6. 运行项目