spel表达式

spel总结

背景:在Spring Boot 中经常通过#{}或者${}这两种方式挂到属性上面进行获取内容,但是又经常获取不到,现在来仔细了解一下这两个的区别。

Spel表达式

例子

​ spel 表达式(Spring Expression Language),这种方式是通过#{…},进行获取,里面是spel表达式

下面通过一些例子进行了解下

通过Spring Boot 进行启动

@RestController(value = "controllerTest")
public class RestControllerTest {
    private Log log = LogFactory.getLog(RestControllerTest.class);
    @Bean(value = "userInfo")
    public UserInfo getUserInfo(){
        return new UserInfo(1l,"spring 爸爸");
    }
    @Value("#{userInfo.name}")
    public String father;
    @Value("#{'my name is spring '}")
    public String name;
    // 此处创建对象要写上包名+类名,否则会报错
    @Value("#{new java.util.Date()}")
    public Date date;
    @Value("#{20}")
    public Integer age;
    @Value("#{1}")
    public Integer sexValue;
    @Value("#{controllerTest.sexValue==1?'男':'女'}")
    public String sex;
    //  controllerTest.age 这里代表 当前bean的名称加上属性就可以直接获取
    @Value("#{controllerTest.age>18?'成年':'未成年'}")
    public String remark;
    @Value("#{controllerTest.age>18 && controllerTest.sexValue==1?'可以':'不可以'}")
    public String goKTV;
    @Value("#{1 lt 2}")
    public Boolean a;
    @GetMapping("/start")
    public String aa(){
        log.info(name);
        log.info("我的父亲是"+father);
        log.info("当前时间是"+date);
        log.info("我今年"+age+"岁");
        log.info("我今年"+remark);
        log.info("我"+goKTV+"KTV唱歌");
        log.info(a);
        return "hello spring boot";
    }
}

public class UserInfo {
    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public UserInfo(Long id, String name) {
        this.id = id;
        this.name = name;
    }
}

输出内容:

my name is spring
我的父亲是spring 爸爸
当前时间是Sun Sep 01 17:43:29 CST 2019
我今年20岁
我今年成年
我可以KTV唱歌
true

运算符类型运算符例子
算术运算+、-、*、/、%、^1+1、2^3、
比较运算<、>、==、<=、>= 、lt、 gt、 eq 、le 、ge1 lt 2
条件运算?:(ternary) 、?:(Elvis)三元运算符 A?true : false
逻辑运算and、or、not、|A and B
正则表达式matches#{email matches ‘[a-zA-Z0-9._%±]+@[a-zA-Z0-9.-]+\.com’}
类型判断instanceof‘xyz’ instanceof T(int)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叁滴水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值