了解spel
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190302130438181.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzg2NzU0,size_16,color_FFFFFF,t_70)
SpEL:字面量
- 如果要为属性赋值字面量不适合使用spel,最好直接赋值
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190302130603819.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzg2NzU0,size_16,color_FFFFFF,t_70)
SpEL:引用 Bean、属性和方法(1)
#{Bean的id值}
#{Bean的id值.属性名称}
#{Bean的id值.方法名称()}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190302130907905.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzg2NzU0,size_16,color_FFFFFF,t_70)
SpEL支持的运算符号(1)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190302130758871.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzg2NzU0,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190302130824171.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzg2NzU0,size_16,color_FFFFFF,t_70)
调用静态方法或静态属性
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019030213175263.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzg2NzU0,size_16,color_FFFFFF,t_70)
示例:使用SpEl动态设置Bean的属性
- 建立三个Bean
- Employee(描述雇员信息)
- Department(描述部门信息)
- Salary(描述工资信息)
public class Employee {
private Integer id;
private String name;
private Integer age;
private String job;
private String jobFlag;
private Salary salary;
private Department department;
}
public class Department {
private Integer deptno;
private String dname;
private String loc;
}
public class Salary {
private Integer sid;
private Double monthSalary;
private String flag ;
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="salary" class="mao.shu.spel.Salary">
<property name="sid" value="1"/>
<property name="monthSalary" value="5000.5"/>
</bean>
<bean id="department" class="mao.shu.spel.Department">
<property name="deptno" value="#{T(java.lang.Math).random()*10}"/>
<property name="dname" value="#{'开发部'}"/>
<property name="loc" value="北京"/>
</bean>
<bean id="employee" class="mao.shu.spel.Employee">
<property name="id" value="#{T(java.lang.Math).random()*1000}"/>
<property name="age" value="22"/>
<property name="job" value="#{department.dname=='开发部'?'程序员':'产品经理'}"/>
<property name="name" value="xiemaoshu"/>
<property name="jobFlag" value="#{salary.monthSalary >= 6000 ? '正式员工':'实习生'}"/>
<property name="department" value="#{department}"/>
<property name="salary" value="#{salary}"/>
</bean>
</beans>
package mao.shu.spel;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import static org.junit.Assert.*;
public class EmployeeTest {
private ApplicationContext applicationContext;
@Before
public void before(){
this.applicationContext = new ClassPathXmlApplicationContext("mao/shu/spel/spel.xml");
}
@Test
public void test(){
Employee employee = (Employee) this.applicationContext.getBean("employee");
System.out.println(employee);
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190302135653855.png)