天天看點

Spring架構(二)DI依賴注入1 簡介2 例子實體類3 注入4 p命名空間(property注入)5 c命名空間(constructor注入)6 bean的作用域

基于:【狂神說Java】Spring5最新完整教程IDEA版通俗易懂

目錄

  • 1 簡介
  • 2 例子實體類
  • 3 注入
    • 3.1 基本資料類型+String
    • 3.2 引用類型
    • 3.3 數組類型
    • 3.4 List清單
    • 3.5 Map類型
    • 3.6 Set集合
    • 3.7 空值
    • 3.8 properties類型
    • 3.9 運作結果
  • 4 p命名空間(property注入)
  • 5 c命名空間(constructor注入)
  • 6 bean的作用域

1 簡介

當使用bean建立對象的時候,可以使用構造器注入參數值、set方法注入參數值。還可以使用其他第三方注入。

依賴注入(Dependency Injection):采用set注入的方式;

  • 依賴:bean對象的建立依賴于容器;
  • 注入:bean對象的所有屬性,由容器來注入;

2 例子實體類

public class User {
    private String name;
    private Address address;
    private String[] books;
    private List<String> hobbies;
    private Map<String,String> card;
    private Set<String> games;
    private String girlFriend;
    private Properties info;
}
           

幾乎涵蓋了需要注入的各種類型。

3 注入

3.1 基本資料類型+String

3.2 引用類型

<bean id="beijing" class="xyz.cqulwj.pojo.Address">
    <constructor-arg name="address" value="北京市"/>
</bean>

<property name="address" ref="beijing"/>
           

3.3 數組類型

<property name="books" >
    <array>
        <value>《三體》</value>
        <value>《朝花夕拾》</value>
        <value>《駱駝祥子》</value>
    </array>
</property>
           

3.4 List清單

<property name="hobbies">
    <list>
        <value>抽煙</value>
        <value>喝酒</value>
        <value>燙頭</value>
    </list>
</property>
           

3.5 Map類型

<property name="card">
    <map>
        <entry key="學生卡" value="152151"/>
        <entry key="交通卡" value="51551"/>
    </map>
</property>
           

3.6 Set集合

<property name="games">
    <set>
        <value>絕地求生</value>
        <value>英雄聯盟</value>
    </set>
</property>
           

3.7 空值

<property name="girlFriend">
    <null/>
</property>
           

3.8 properties類型

<property name="info">
    <props>
        <prop key="處分">高中期間曾經由于外出上網被保安抓住處500元罰款</prop>
        <prop key="獎勵">大學因教育室友不要外出上網獎勵500元現金</prop>
    </props>
</property>
           

3.9 運作結果

User{
	name='劉建國', 
	address=Address{address='北京市'}, 
	books=[《三體》, 《朝花夕拾》, 《駱駝祥子》], 
	hobbies=[抽煙, 喝酒, 燙頭], 
	card={學生卡=152151, 交通卡=51551}, 
	games=[絕地求生, 英雄聯盟], 
	girlFriend='null', 
	info={處分=高中期間曾經由于外出上網被保安抓住處500元罰款, 獎勵=大學因教育室友不要外出上網獎勵500元現金}
}
           

4 p命名空間(property注入)

beans.xml

中添加

p

命名空間:

xmlns:p="http://www.springframework.org/schema/p"

然後使用p命名空間對簡單的類型進行注入:

5 c命名空間(constructor注入)

添加命名空間:

xmlns:c="http://www.springframework.org/schema/c"

使用c命名空間注入:

由于采用的是構造器注入,是以必須要有這個參數的構造器

6 bean的作用域

當調用

getBean()

的時候。配置在bean中

scope="prototype"

  • Singleton:記憶體中隻有一個bean對應類的對象,預設實作;
  • prototype:原型,每一次get都會建立一個對象。
  • request、session、application再web開發中使用。