spel 表达式语言 注入
/* *作者:呆萌老师 *☑csdn认证讲师 *☑51cto高级讲师 *☑腾讯课堂认证讲师 *☑网易云课堂认证讲师 *☑华为开发者学堂认证讲师 *☑爱奇艺千人名师计划成员 *在这里给大家分享技术、知识和生活 *各种干货,记得关注哦! *vx:it_daimeng */
比如如果只是引入对象中的某个属性 可以 用#{}
<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>