龙空技术网

SpringBoot实战14-Spring基础-EL表达式

爱科学的卫斯理 503

前言:

今天姐妹们对“el表达式的语法”大约比较讲究,你们都需要学习一些“el表达式的语法”的相关资讯。那么小编同时在网络上网罗了一些有关“el表达式的语法””的相关资讯,希望同学们能喜欢,同学们一起来学习一下吧!

上篇我们学习了《SpringBoot实战13-Spring基础-Bean之间的异步事件通讯》,本篇我们学习Spring EL表达式。

6 Spring EL

Spring表达式语言(Spring Expression Language简称Spring EL)是在Spring生态下通用的,在运行时使用表达式查询属性信息(使用符号$)或操作Java对象使用符号#),它可以主要使用在XML、注解上。

本节主要使用@Valueorg.springframework.beans.factory.annotation.Value)注解来演示Spring EL的功能,它可以获得表达式计算出来的结果。

6.1 数学运算

我们可以用表达式进行进行数学运算,包括:+-, *, /%^divmod

@Servicepublic class ValueService {    @Value("#{1 + 2}") // Java对象操作使用#    private Integer add;}
6.2 比较运算

我们可以在表达式中进行比较等操作,包括:<>==!=,<=,>=ltgteqnelege

@Value("#{1 == 2}")private boolean compare;
6.3 逻辑运算

我们可以在表达式中进行比较等操作,包括:andornot&&||!

@Value("#{1 == 2 || 1 == 1}")private boolean compareOr;
6.4 条件运算

使用三元运算符?:来进行条件运算。

@Value("#{1 < 2 ? 'wyf' : 'www'}")private String name;
6.5 正则匹配

使用matches比较是否符合正则表达式。

@Value("#{'1' matches '\\d+' }")private boolean isNumber;
6.6 调用Bean方法

可以直接用Spring EL来直接调用Bean的方法,如被调用的Bean定义为:

@Servicepublic class ForValueService {    public String generate(String name){        return "Hello " + name;    }}

我们可以通过#{bean名.方法名(参数)}来进行调用:

@Value("#{forValueService.generate('wyf')}")private String beanReturn;
6.7 获得Environment中的属性

Environment可以从外部文件或者操作系统环境变量获取属性信息,如:

@Service@PropertySource("classpath:author.properties") //1public class ValueService {    @Value("${author.name}") //2    private String authorName;    @Value("${os.name}") //3    private String osName;    }
通过@PropertySource加载配置文件中的属性信息到Environment中;查询属性使用符号****,格式为: `∗∗,格式为:‘(属性名)`;同样获得操作系统环境变量信息的方式与2一致。

上面完整的代码如下:

@PropertySource("classpath:author.properties")public class ValueService {    @Value("#{1 + 2}")    private Integer add;    @Value("#{1 == 2}")    private boolean compare;    @Value("#{1 == 2 || 1 == 1}")    private boolean compareOr;    @Value("#{1 < 2 ? 'wyf' : 'www'}")    private String name;    @Value("#{'1' matches '\\d+' }")    private boolean isValidNumber;    @Value("#{forValueService.generate('wyf')}")    private String beanReturn;    @Value("${author.name}")    private String authorName;    @Value("${os.name}")    private String osName;    public void doSomething(){        System.out.println("数学运算add的值是:" + add);        System.out.println("逻辑运算compare的值是" + compare);        System.out.println("逻辑运算compareOr的值是" + compareOr);        System.out.println("条件运算name的值是:" + name);        System.out.println("正则匹配isValidNumber的值是:" + name);        System.out.println("调用Bean的返回值beanReturn值是:" + beanReturn);        System.out.println("属性查询外部配置文件authorName值是:" + authorName);        System.out.println("属性查询操作系统环境变量authorName值是:" + osName);    }}

JavaConfig进行结果检验:

@BeanCommandLineRunner valueClr(ValueService valueService){    return args -> valueService.doSomething();}

下一篇《SpringBoot实战15-Spring基础-AOP》

标签: #el表达式的语法 #el表达式 菜鸟教程