天天看點

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>