SSM-Spring-Spring装配Bean-使用Spring表达式(Spring EL)
Spring EL功能:
- 使用Bean的id引用Bean
- 调用指定对象的方法和指定对象的属性
- 进行运算
- 提供正则表达式进行匹配
- 集合配置
Spring EL相关类
ExpressionParser接口:一个表达式解析接口
Spring EL还支持变量解析,需要用到一个接口EvaluationContext,他有一个实现类StandardEvaluationContext
Bean的属性和方法
使用注解的方式需要用到注解@Value,在SpringEL中通过#{} 的方式获取属性文件内容,如:
@Component("role")
public class Role{
//赋值long
@Value("#{1}")
private long id;
//赋值String
@Value(#{'roleName'})
private String roleName;
//set and get ...
}
这样就定义一个BeanName为eole的角色类,同事给予它所有属性,这时候通过另一个Bean去引用他的属性或者调用它的方法,如:
@Component("elBean")
public class ElBean{
//通过beanName获取bean,然后注入
@Value("#{role}")
private Role role;
//获取bean的属性id
@Value("#{role.id}")
private Long id;
//调用bean的getId方法,获取id
@Value("#{role.getId.toString()}")
private Long id2;
}
使用类的静态常量和方法
格式:#{T().XXX}
例子:
@Value("#{T(Math).PI")
private double pi;
注意:在Spring中使用一个非该包的内容,需要给出该类的全限定名
@Value("#{T(java.long.Math).PI")
private double pi;
### Spring EL 运算
可以进行运算:
@Value("#{role.id+1}")
private Long id;
可以用+号连接字符串
@Value("#{role.roleName+role.note}")
private String str;
还能用于判断和比较
@Value("#{role.id==1}")
private boolean equlNum;
@Value("#{role.note eq 'note_1'}")
private boolean eqaulString;
@Value("#{role.id > 1}")
private boolean greater;
@Value("#{role.id<2}")
private boolean less;
能实现三目运算:
@Value("#{role.id > 1 ? 5 : 1}")
private int max;
@Value("#{role.note?:'hello'}")
private String defaultString;
@Value("#{role.id > 1 ? 5 : 1}")
private int max;
@Value("#{role.note?:‘hello’}")
private String defaultString;