SpEL表达式
Posted zumengjie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpEL表达式相关的知识,希望对你有一定的参考价值。
春节在家躲避流感,闲来无事看看spring文档打发时间。总结了spring中SpEL表达式的各种骚写法,其实还有几个,确实看不明白怎么用。代码片段环境为springboot,建议将代码复制到项目里运行能看出效果哦。
package com.datang.springcode.el;/* * @auther 顶风少年 * @mail dfsn19970313@foxmail.com * @date 2020-01-22 22:19 * @notify * @version 1.0 */ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Component public class Bean1 { public String name = "张三"; public List<String> hobby = new ArrayList<>(); public String[] honey = {"小红", "小兰"}; public Map<String,Integer> grade = new HashMap<>(); public String nullN = null; public List<Bean2> bean2s=new ArrayList<>(); public Bean1() { hobby.add("篮球"); hobby.add("足球"); hobby.add("乒乓球"); grade.put("语文",100); grade.put("数学",99); bean2s.add(new Bean2("张三")); bean2s.add(new Bean2("莉莉丝")); bean2s.add(new Bean2("汪汪五")); } public int getAge(){ return 100; } }
package com.datang.springcode.el;/* * @auther 顶风少年 * @mail dfsn19970313@foxmail.com * @date 2020-01-23 15:27 * @notify * @version 1.0 */ public class Bean2 { public String name; public Bean2(String name) { this.name = name; } }
package com.datang.springcode.el;/* * @auther 顶风少年 * @mail dfsn19970313@foxmail.com * @date 2020-01-22 21:40 * @notify * @version 1.0 */ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; @Component public class ElBean { //注入Boolean @Value("true") private boolean booleanType; //注入short @Value("123") private Short shortType; //注入double @Value("12.33") private Double doubleType; //注入字符串 @Value("ddd") private String stringType; /* 取的bean的属性,该bean的属性必须是public或者有get()方法。 */ //也可以注入bean @Value("#{@bean1}") private Bean1 bean2; //取bean的属性 @Value("#{bean1.name}") private String name; //bean的属性是数组 @Value("#{bean1.honey[0]}") private String honey; //bean的属性是集合 @Value("#{bean1.hobby[1]}") private String hobby; //bean的属性是map,根据key取value @Value("#{bean1.grade[‘数学‘]}") private int grade; //创建数组 @Value("#{new int[]{1,2,3}}") private int[] phoneCode; //调用bean的方法 @Value("#{bean1.getAge()}") private int age; //关系运算符 等于,不等于,小于,小于或等于,大于和大于或等于 @Value("#{1==1}") private boolean booleanType2; //逻辑运算符 && || ! @Value("#{ !true }") private boolean booleanType3; //算数运算符 + - * / % ^ @Value("#{2^2}") private int intType1; //new 对象,注意必须是全限定类名 @Value("#{new com.datang.springcode.el.Bean1()}") private Bean1 bean1; //三元表达式 @Value("#{bean1.getAge()>2?bean1.getAge():2}") private Integer intType2; //判断属性是否为null的三元表达式可以简化,但是如果该属性不存在报错。 @Value("#{bean1.nullN?:‘张三三‘}") private String intType3; //对map的value筛选 @Value("#{bean1.grade.?[value>99]}") private Map<String,String> map; //bean的集合中是一个对象,取每个对象的属性 @Value("#{bean1.bean2s.![name]}") private List<String> names; }
@Test public void t4(){ AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringcodeApplication.class); ElBean bean = applicationContext.getBean(ElBean.class); System.out.println(bean); }
新年快乐!
以上是关于SpEL表达式的主要内容,如果未能解决你的问题,请参考以下文章