13.笔记JAVA Spring框架学习————Bean使用SpEL
Spring Expression Language. Spring的表达式语言。
l Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言。
l 语法类似于 EL:SpEL 使用 #{…} 作为定界符,所有在大框号中的字符都将被认为是 SpEL
l SpEL 为 bean 的属性进行动态赋值提供了便利
l 通过 SpEL 可以实现:
Ø 通过 bean 的 id 对 bean 进行引用
Ø 调用方法以及引用对象中的属性
Ø 计算表达式的值
Ø 正则表达式的匹配
n 整数:
n 小数:
n 科学计数法:
n String可以使用单引号或者双引号作为字符串的定界符号:
n Boolean:
SpEL支持的运算符号
在app.xml文件中配置如下:
<bean id="girl"class="User">
<property name="userName"value="周迅">property>
bean>
<bean id="boy"class="User" >
<property name="userName"value="高胜远">property>
<property name="wifeName"value="#{girl.userName}">property>
bean>
Main.java如下:
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
import com.mchange.v2.c3p0.DataSources;
publicclass Main {
publicstaticvoid main(String[]args) throws SQLException {
//1. 创建Spring 的 IOC 容器
ApplicationContext apx = newClassPathXmlApplicationContext("app.xml");
User user = (User) apx.getBean("girl");
System.out.println(user);
User user2 = (User) apx.getBean("boy");
System.out.println(user2);
}
}
测试执行如下,实现了使用SpEL来赋字面值。
User'sConstrutor...
User'sConstrutor...
setWifhName:周迅
User[userName=周迅, cars=null]
User[userName=高胜远, cars=null]
其中User.java和之前例子中的User.java
蛤蟆此处在复制一下如下:
import java.util.List;
import java.util.Map;
public class User {
privateString userName;
privateList
privateString wifeName;
publicString getWifeName() {
returnwifeName;
}
publicvoid setWifeName(String wifeName) {
System.out.println("setWifhName:" + wifeName);
this.wifeName= wifeName;
}
publicString getUserName() {
returnuserName;
}
publicvoid setUserName(String userName) {
this.userName= userName;
}
publicList
returncars;
}
publicvoid setCars(List
this.cars= cars;
}
publicUser() {
System.out.println("User'sConstrutor...");
}
@Override
publicString toString() {
return"User [userName=" + userName + ", cars=" + cars +"]";
}
publicvoid init(){
System.out.println("initmethod...");
}
publicvoid destroy(){
System.out.println("destroymethod...");
}
}