博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
说说如何在 Spring 框架中使用 SpEL 表达式
阅读量:5788 次
发布时间:2019-06-18

本文共 2922 字,大约阅读时间需要 9 分钟。

在 Spring 框架的 XML 配置方式或者注解配置方式中,我们都可以使用 SpEL 表达式,它们的语法都是 #{表达式}

1 基于 XML 配置

在 XML 配置中,我们可以通过 SpEL 表达式为 Bean 的属性或构造函数入参注入动态值:

复制代码

在此,我们通过表达式动态地为 SystemPropertiesBean 注入 osName(操作系统名)与 classPath(类路径)属性。

SystemPropertiesBean.java

public class SystemPropertiesBean {    private String osName;    private String classPath;    public void setOsName(String osName) {        this.osName = osName;    }    public String getOsName() {        return osName;    }    public void setClassPath(String classPath) {        this.classPath = classPath;    }    public String getClassPath() {        return classPath;    }    @Override    public String toString() {        return "SystemProperties{" +                "osName='" + osName + '\'' +                ", classPath='" + classPath + '\'' +                '}';    }}复制代码

单元测试:

ApplicationContext context = new ClassPathXmlApplicationContext("spring9-5.xml");SystemPropertiesBean systemPropertiesBean = (SystemPropertiesBean) context		.getBean("systemPropertiesBean");System.out.println("systemPropertiesBean:"+systemPropertiesBean);复制代码

输出结果:

systemPropertiesBean:SystemProperties{osName='Windows 7', classPath='C:\Program Files (x86)\IntelliJ IDEA ...

可以通过表达式 #{Bean名称.属性名称} 的方式来引用其它 Bean 已经定义好的属性:

复制代码

QuoteBean.java:

public class QuoteBean {    private String osName;    public void setOsName(String osName) {        this.osName = osName;    }    public String getOsName() {        return osName;    }    @Override    public String toString() {        return "QuoteBean{" +                "osName='" + osName + '\'' +                '}';    }}复制代码

单元测试:

ApplicationContext context = new ClassPathXmlApplicationContext("spring9-5.xml");QuoteBean quoteBean = (QuoteBean) context		.getBean("quoteBean");System.out.println("quoteBean:"+quoteBean);复制代码

输出结果:

quoteBean:QuoteBean{osName='Windows 7'}

2 基于注解配置

可以使用 @Value 注解标注在类属性、方法和构造函数上。一般用来从配置文件中加载参数值。

标注了 @Value 注解的类:

@Component(value = "SystemParams")public class SystemParams {    @Value("driverClassName")    private String driverClassName;    public String getDriverClassName() {        return driverClassName;    }    public void setDriverClassName(String driverClassName) {        this.driverClassName = driverClassName;    }    @Override    public String toString() {        return "SystemParams{" +                "driverClassName='" + driverClassName + '\'' +                '}';    }}复制代码

XML 配置:

复制代码
  1. 引入了 util 命名空间,通过 util:properties 直接从 classpath 中加载配置文件。
  2. 还通过 context:property-placeholder 指定配置名,从而简化了 @Value 中的 SpEL 表达式。如果这里没有指定,那么 SpEL 表达式必须定义为 #{properties['driverClassName']

单元测试:

ApplicationContext context = new ClassPathXmlApplicationContext("spring9-5.xml");SystemParams systemParams = (SystemParams) context		.getBean("SystemParams");System.out.println(systemParams);复制代码

输出结果:

SystemParams{driverClassName='driverClassName'}

是不是很简单呀 O(∩_∩)O哈哈~

转载地址:http://wemyx.baihongyu.com/

你可能感兴趣的文章
HTML5 浏览器返回按钮/手机返回按钮事件监听
查看>>
xss
查看>>
iOS:百度长语音识别具体的封装:识别、播放、进度刷新
查看>>
JS获取服务器时间并且计算距离当前指定时间差的函数
查看>>
华为硬件工程师笔试题
查看>>
jquery居中窗口-页面加载直接居中
查看>>
cd及目录快速切换
查看>>
Unity Shaders and Effects Cookbook (3-5) 金属软高光
查看>>
31-hadoop-hbase-mapreduce操作hbase
查看>>
C++ 代码风格准则:POD
查看>>
linux-友好显示文件大小
查看>>
【转】【WPF】WPF中MeasureOverride ArrangeOverride 的理解
查看>>
【转】二叉树的非递归遍历
查看>>
NYOJ283对称排序
查看>>
接连遇到大牛
查看>>
[Cocos2d-x For WP8]矩形碰撞检测
查看>>
自己写spring boot starter
查看>>
花钱删不完负面消息
查看>>
JBPM之JPdl小叙
查看>>
Membership三步曲之进阶篇 - 深入剖析Provider Model
查看>>