SSM-Spring-Spring装配Bean-使用Spring表达式(Spring EL)

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 运算

可以进行运算:

扫描二维码关注公众号,回复: 13118582 查看本文章
@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;


猜你喜欢

转载自blog.csdn.net/weixin_43958223/article/details/115180481