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

可以进行运算:

@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;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值