天天看点

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>      
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-expression</artifactId>
  <version>4.3.18.RELEASE</version>
</dependency>      
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>