spel 表达式语言 注入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spel 表达式语言 注入相关的知识,希望对你有一定的参考价值。

/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*/

比如如果只是引入对象中的某个属性 可以 用#

<bean id="outSeller_05" class="com.test.pojo.OutSeller" p:type="饿了么"
p:drink-ref="drink_05" />

<bean id="outSeller_06" class="com.test.pojo.OutSeller">
<property name="type" value="#outSeller_05.type" />
<property name="drink" ref="drink_05" />
</bean>

二.SPEL
spel:spring 表达式语言 ,Spring Expression Language(缩写为SpEL)是一种强大的表达式语言。在Spring产品组合中,它是表达式计算的基础。它支持在运行时查询和操作对象图,它可以与基于XML和基于注解的Spring配置还有bean定义一起使用。由于它能够在运行时动态分配值,因此可以为我们节省大量Java代码

需要的jar包

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.3.18.RELEASE</version>
</dependency>

1.定义测试案例
​ 自定义类: function类

package com.test.spel;

import com.test.pojo.Drink;

import java.util.ArrayList;
import java.util.List;

public class TestSpel

//成员方法 先创建对象 再调用对象中的方法
// <bean id="testSpel" class="com.test.spel.TestSpel"/>
//#testSpel.getDrinkList()
public List<Drink> getDrinkList()

List<Drink> list=new ArrayList<Drink>();

list.add(new Drink("奶茶"));

list.add(new Drink("橙汁"));

return list;



//静态方法 可以直接用类名访问 # T(com.test.spel.TestSpel).getDrinkList2()


public static List<Drink> getDrinkList2()

List<Drink> list=new ArrayList<Drink>();

list.add(new Drink("奶茶2"));

list.add(new Drink("橙汁2"));

return list;




2. spring的配置文件中的使用
访问成员属性

#对象.属性名

访问静态方法

#T(包名.类名).方法名([参数])

访问成员方法

#对象.方法名()
  <bean id="testSpel" class="com.test.spel.TestSpel"/>

<!-- 访问成员方法 -->
<bean id="aa" class="com.test.pojo.AA">

<property name="num" value="#3*4" />

<property name="drinkList" value="#testSpel.getDrinkList()" />

</bean>

<!-- 访问静态方法 -->
<bean id="aa2" class="com.test.pojo.AA">

<property name="drinkList" value="#T(com.test.spel.TestSpel).getDrinkList2()" />

</bean>

以上是关于spel 表达式语言 注入的主要内容,如果未能解决你的问题,请参考以下文章

web安全Spel表达式注入漏洞

SpEL表达式

一文详解SpEL表达式注入漏洞

[Java-sec-code]SpEL表达式注入

Springday01 maven依赖Spring介绍IOC模块IOC控制反转DI依赖注入SpEL表达式

Spring之@Value详解,利用SPEL注入List