el表达式(SpringBoot实战14Spring基础EL表达式)

上篇我们学习了《SpringBoot实战13-Spring基础-Bean之间的异步事件通讯》,本篇我们学习Spring EL表达式。 6 Spring EL Spring表达式语言(Spring Expression Language简称Spring EL)是在S...

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

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

6 Spring EL

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

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

6.1 数学运算

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

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

我们可以在表达式中进行比较等操作,包括:<, >, ==, !=,<=,>=,lt, gt,eq, ne, le, ge。

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

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

@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实战14-Spring基础-EL表达式

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

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

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

  • 发表于 2022-10-30 11:53:32
  • 阅读 ( 122 )
  • 分类:科技

0 条评论

请先 登录 后评论
135
135

1101 篇文章

你可能感兴趣的文章

相关问题