1. 程式人生 > >Spring相關知識總結

Spring相關知識總結

此文章是根據網上某某有關spring講解的視訊,做的筆記,講的很好

Bean的建立規則

applicationContext.xml檔案簡單配置
配置檔案

在其中一個類中在空參構造中輸出一句話

在這裡插入圖片描述

  1. BeanFactory物件

    	提供的是一種延遲載入的思想,bean物件什麼時候使用,什麼時候進行建立
    

在這裡插入圖片描述

斷點打在19行,當載入完配置檔案時候,並沒有建立bean物件
在這裡插入圖片描述

只有在使用的時候,才建立了bean物件;繼續下一步,執行到21行時
在這裡插入圖片描述

bean物件被建立
在這裡插入圖片描述

  1. ApplicationContext物件

容器一載入就直接建立bean物件,採用的是立即載入思想

在這裡插入圖片描述

將斷點打在第12行,進入斷點除錯,下一步看日誌資訊,在還沒有使用到該物件的情況下,就已經被建立

在這裡插入圖片描述

ApplicationContext物件的兩個實現類
ClassPathXmlApplicationContext:載入類路徑下面的配置檔案(一般我們使用這個類)
FileSystemXmlApplicationContext:可以載入磁碟路徑任意位置的配置檔案

Bean的建立方式

  1. 第一種:通過無參建構函式建立物件(開發常用)

    	該方式,如果沒有無參構造的話,會建立失敗,報異常
    
  2. 第二種:使用工廠建立物件

    	靜態工廠建立物件:需要使用bean標籤的factory-method屬性,指定靜態工廠的建立物件的方法
    

工廠類
在這裡插入圖片描述

applicationContext.xml配置
在這裡插入圖片描述

例項工廠建立物件

工廠類
在這裡插入圖片描述

apllicationContext.xml配置
在這裡插入圖片描述

Bean的作用範圍
通過bean的scope屬性進行配置
屬性的取值:

singleton:單例(預設)
prototype:多例(當我們讓spring接管struts2的action建立時,action必須配置)
request:作用範圍是一次請求,和當前請求的轉發
session:一次會話
globalsession:作用範圍是一次全域性會話

Bean的生命週期
涉及到的bean標籤的兩個屬性:

	    init-method	:初始化方法,需要在bean物件中 ,寫一個 初始化的方法,進行配置驗證
		destroy-method :銷燬方法,,需要在bean物件中 ,寫一個 銷燬的方法,進行配置驗證

bean書寫
在這裡插入圖片描述

單例:

		建立:當容器一載入,就會建立 
		存在:只要容器存在,物件就會存在
		銷燬:容器銷燬,物件就銷亡

applicationContext.xml配置
在這裡插入圖片描述

執行結果
在這裡插入圖片描述
多例:

		建立:每次使用時,建立物件
		活著:只要物件在使用中,就一直存在
		銷燬:當物件長時間不使用,並且也沒有其他的物件引用,將由垃圾回收器進行回收

applicationContext.xml配置
在這裡插入圖片描述
結果:
在這裡插入圖片描述
銷燬方法沒有執行,原因是因為spring不知道什麼時候次物件不被使用

Spring的IOC思想

在這裡插入圖片描述

依賴注入的兩種方式(非註解版):

  1. 通過set方式進行注入
  涉及的標籤:property
         標籤屬性:
         				name:指定set方法的名稱
         				===================上面指定給哪個引數賦值,下面兩個是賦值的內容===================
         				value:指定基本資料型別或String型別的資料
         				ref:指定其他的bean類資料
    	標籤出現的位置:
    					寫在bean標籤裡面

在這裡插入圖片描述

在這裡插入圖片描述

2.通過建構函式注入

 涉及的標籤:constructor-arg
 標籤屬性:
 				type:指定引數的型別
 				index:指定引數的索引位置,從0開始
 				name:指定引數的名稱,(一般使用)
 				===================上面三個是給哪個引數賦值,下面兩個是賦值的內容===================
 				value:指定基本資料型別或String型別的資料
 				ref:指定其他的bean類資料
標籤出現的位置:
				寫在bean標籤裡面

在這裡插入圖片描述
在這裡插入圖片描述

通過set方法注入複雜型別(結構相同,標籤可以互換)
list/set/array
map/props
在這裡插入圖片描述

基於註解的IOC

  1. 用於建立bean物件

@Component
作用:相當於在applicationContext.xml中配置了一個bean標籤;
可以出現的位置:類上面
屬性: value :指的是 bean的id,當不寫的時候,預設是當前類名,首字母小寫
由此註解衍生三個註解:
@Repository: 一般用在持久層
@Service: 一般用在業務層
@Controller: 一般用在表現層

  1. 注入資料型別

@Autowired:
作用:自動按照型別注入。只要有唯一的型別匹配就可以注入成功。如果注入的bean容器中符合的型別不唯一的時候,就會將變數名作為bean的id,在容器中查詢,如果找到的話,也是可以注入成功,如果沒有,就會丟擲異常

原理:首先①根據型別去匹配,看是否有符合型別的bean物件;
如果存在,且存在多個,再根據變數的名字去跟符合型別的物件的bean的id名字是否相同,如果都不同,則丟擲異常,
在這裡插入圖片描述

@Qualifier:
作用:在自動按照型別注入的基礎上,按照bean的id進行注入;在跟類成員注入資料時,此註解需要和@Autowired配合使用,不可以獨立使用;但是再給方法的形參注入資料時,可以獨立使用;
屬性:value:用於指定bean的id
@Resource(name= " "):
作用:直接按照bean的id注入
屬性:name:用於指定bean的id
以上的註解適用於注入其他bean型別。用於注入基本型別和String型別,需要使用@Value註解===
@Value:
作用:用於注入基本型別和String型別資料,可以藉助spring的el表示式讀取properties檔案的配置
屬性:value:用於指定注入的資料的值

取消xml配置檔案,編寫配置類
在這裡插入圖片描述

視屏截圖

在這裡插入圖片描述

spring整合Junit步驟

  1. 第一步:新增spring-test-4.2.4RELEASE依賴

  2. 第二步 :使用@RunWith註解;替換junit
    使用SpringJunit4ClassRunner

  3. 第三步:在測試類上面新增ContextConfiguration註解 純註解的使用 ,使用class屬性; class={位元組碼物件}
    有xml配置的,使用locations屬性; locations= {""}