spel 表达式语言 注入

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

  

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

1
2
3
4
5
6
7
<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包

1
2
3
4
5
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-expression</artifactId>
  <version>4.3.18.RELEASE</version>
</dependency>

  

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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(包名.类名).方法名([参数])}

​ 访问成员方法

#{对象.方法名()}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<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>

  

posted @   呆萌老师  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示