Spring EL 表达式的简单介绍和使用

文章目录

本文主体部分来自于 KILLKISSSpringEL详解及应用。对文中部分代码做了校验和补充,并添加了自己的部分代码。


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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值