Spring EL表达式

1,Spring EL 表达式简介

Spring EL 表达式是Spring提供的最新的灵活的注入方式,相比于传统的注解注入以及xml配置文件的注入远远地更加的强大。

2,Spring EL的功能

(1)可以使用bean的id去引用bean。
(2)可以调用指定对象的方法以及对象的属性
(3)可以对对象的属性进行运算。
(4)提供正则表达式进行匹配
(5)集合配置

可以说使用EL表达式可以拥有比使用properties属性文件配置方式更加强大的装配功能。
同时使用Spring EL表达式定义的解析类进行测试

3,Spring EL表达式相关的类

(1)ExprssionParser接口,它是一个表达式的解析接口,因为是接口所以不具备具体的功能,功能由它的实现类去提供。

ExperssionParser有一个抽象的实现类是TemplateAwareExpressionParser,这个抽象类又有两个实现的子类。一个是SpelExpressionParser,,另一个实现的子类就是InternalSpelExpressionParser。
(2)项目中的引用代码

// 表达式解析器
Role role = new Role(2,"name","note");
ExpressionParser Parser = new SpelExpressionParser();

// 获取表达式
Expression exp = parser.parserExpression("note");

// 从表达式里面获取role的备注信息
String note= (String)exp.getValue(role);

// 变量环境类,,并且将角色对象role作为其根节点
EvaluationContext ctx = new StandardEvaluationContext(role);

//  变量环境操作根节点,,可以更改设置备注信息为new_note。
parser.parserExpression("note").setValue(ctx,"new_note");

//  获取备注,这里的String.class表明,我们希望返回的是一个字符串。
note = parser.parserExpression("note").getValue(ctx,String.class);

//  调用getRoleName方法,String.class 也是表示返回的数据类型为String字符串类型。
String roleName = parser.parserExpression("getRoleName()").getValue(ctx,String.class);

// 新增环境变量
List<String> list = new ArrayList<String>();
list.add("value1");
list.add("value2");
//  给变量环境增加变量
ctx.setVariable("list",list);

**加粗样式**//  通过表达式去读/写环境变量的值
parser.parserExpression("#list[1]").setValue(ctx,"update_valye2");\
// 获取值并返回字符串的格式String
parser.parserExpression("#list[1]").getValue(ctx,String.class):

4,详细说明文档

EvaluationContext使用了它的实现类StandardEvaluationContext进行实例化,简单的在构造方法时候就将角色对象传递给了它。那么估值内容就会基于这个类进行解析。
因此后面的getValue以及setValue方法就是把这个估值内容能够传递进去,这样子就可以读写根节点的内容了。后面通过getRoleName()的例子就可知道,它还支持方法的调用。

为了估值更加的方法的灵活,还支持了变量的新增以及操作。上述代码中创建了一个list,并且将list用估值内容的方法setVariable进行设置,其键为"list"; 这样子就允许我们通过#list去引用它,而给出的下标1,就是代表集合list的第二个元素也就是value2。

注意:Spring EL 表达式最重要的功能就是对Bean属性进行注入。

你可能感兴趣的:(项目开发SSM,boot要点)