文章目录
本文主体部分来自于 KILLKISS
的 SpringEL详解及应用。对文中部分代码做了校验和补充,并添加了自己的部分代码。
1. 简单介绍
1.1. 什么是 Spring EL
Spring3 中引入了 Spring 表达式语言 — Spring EL,SpEL 是一种强大,简洁的装配 Bean 的方式,它可以通过运行期间执行的表达式将值装配到我们的属性或构造函数当中,更可以调用 JDK 中提供的静态常量,获取外部 Properties 文件中的的配置。
1.2. 为什么要使用 Spring EL
我们平常通过配置文件或注解注入的 Bean,其实都可以称为静态性注入,试想一下,如果我的 Bean A 中有变量 A,它的值需要根据 Bean B 的 B 变量为参考,在这个场景下静态注入就显得非常无力,而 Spring3 增加的 Spring EL 就可以完全满足这种需求,而且还可以对不同 Bean 的字段进行计算再进行赋值,功能非常强大。
1.3. 如何使用 Spring EL
Spring EL 从名字来看就能看出,和 EL 是有关系的,Spring EL 的使用和 EL 表达式的使用非常相似,EL 表达式在 JSP 页面更方便的获取后台中的值,而 Spring EL 就是为了更方便获取 Spring 容器中的 Bean 的值,EL 使用${}
,而 Spring EL 使用#{}
进行表达式的声明。
2. 简单使用
辅助类:
package com.example.spel.bean;
import org.springframework.stereotype.Component;
import java.util.*;
@Component
public class TestConstant {
public static final String STR = "测试SpEL";
public String nickname = "一线大码";
public String name = "笑傲江湖";
public int num = 5;
public List<String> testList = Arrays.asList("aaa", "bbb", "ccc");
public Map testMap = new HashMap() {
{
put("aaa", "元宇宙算法");
put("hello", "world");
}};
public List cityList = new ArrayList<City>() {
{
add(new City("aaa", 500));
add(new City("bbb", 600));
add(new City("ccc", 1000));
add(new City("ddd", 1000));
add(new City("eee", 2000));
add(new City("fff", 3000));
}};
public String showProperty() {
return "Hello";
}
public String showProperty(String str) {
return "Hello " + str + "!";
}
}
package com.example.spel.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class City {
private String name;
private long population;
}
测试代码:
package com.example.spel.el;
import com.example.spel.bean.City;
import com.example.spel.bean.TestConstant;
import lombok.ToString;
import org.springframework.beans.f