Spring總結一 IOC與Bean注入

2021-10-02 15:19:33 字數 2186 閱讀 8905

spring 的核心是控制反轉(ioc)和面向切面(aop)。

ioc即inversion of control,翻譯過來就是控制反轉。啥是控制反轉啊?控制反轉指的就是將物件的建立權反轉給(交給)了spring,其作用是實現了程式的解耦合。也可以說是獲取物件的方式變了,物件建立的控制權不是"使用者",而是容器。這種方式不類似於以前寫程式主動請求資源(new 物件的方式),而是我們通過配置將所需要的資源請求告訴容器,spring 容器在建立過程中會將我們需要的資源交給我們,即依賴注入,各種資源是由容器建立並交給程式,反轉了資源獲取的方向,即控制反轉。用更通俗的話來說,ioc就是指物件的建立,並不是在**中用new出來的,而是通過spring進行配置建立的。

ioc的底層原理就是工程模式+反射+xml配置檔案。

aop:即面向切面程式設計。spring 後續總結中我再仔細講,本文不會過多闡述它。

輕量級框架spring的優點:

1、spring的依賴注入將物件之間的依賴關係交給了框架來處理,減小了各個元件之間的耦合性;

2、aop面向切面程式設計,可以將通用的任務抽取出來,復用性更高;

3、spring對於其餘主流框架都提供了很好的支援,**的侵入性很低。

<?xml version="1.0" encoding="utf-8"?>

所有的配置都要在beans標籤內寫,這是 spring 配置檔案的根元素。

在 xml 檔案中通過 bean 節點來配置 bean

bean 配置方式:通過全類名(反射)、通過工廠方法(靜態工廠方法 & 例項工廠方法)、factorybean

spring 提供了兩種型別的 ioc 容器實現.

1、屬性注入

屬性注入即通過 setter 方法注入 bean 的屬性值或依賴的物件。

屬性注入通過 元素,使用 name 屬性指定 bean 的屬性名稱,value 屬性或 節點指定屬性值。

class:bean的全類名,通過反射的方式在 ioc容器中建立bean,所以要求bean中必須有無引數的構造器

id:標識容器中的bean,id值一定是唯一的

id:bean 的名稱。

2、構造器注入

構造方法注入bean 的屬性值或依賴的物件,它保證了 bean 例項在例項化後就可以使用。

構造器注入在 元素裡宣告屬性。

中沒有name屬性

注意:有兩種形式入參,一種是按照索引匹配入參,另一種是按照型別匹配入參

]]>

250

注入屬性的時候牽扯到一些注入方式的區別,稍微解釋一下。

字面值:可用字串表示的值,可以通過 < value> 元素標籤或者value屬性進行注入

基本資料型別及其封裝類、string等型別都可以採取字面值注入的方式。

字面值中包含特殊字元,可以使用把字面值包裹起來。

當 bean 例項僅僅給乙個特定的屬性使用時,可以將其宣告為內部 bean。內部 bean 宣告直接包含在 < property > 或 < constructor-arg >元素裡,不需要設定任何 id 或 name 屬性

注意:內部 bean 不能使用在任何地方

root

1234

jdbc:mysql///test

com.mysql.jdbc.driver

Spring學習總結IOC

ioc 控制權的反轉,應用程式不負責依賴物件的建立和維護,而是由外部容器負責建立和維護。di 依賴注入是一種ioc的實現方式,目的是建立物件並組裝物件之間的關係。bean容器初始化 本地檔案 classpath servlet或者listener listener listener class or...

Spring的使用(一) IOC與DI

ioc inversion of control 控制反轉,將 的控制權轉移,從 本身轉移到spring容器中,由spring容器進行控制。實現步驟 獲取spring容器 在容器中註冊響應的bean 獲取容器中已經註冊的bean io dependency injection 依賴注入,當容器中的某...

Spring原始碼 IOC(一)

它是spring中bean容器的頂級介面。裡面有獲取bean,判斷是否包含bean,是否單例,獲取別名等基本方法 listablebeanfactory 根據條件獲取bean的配置清單。如string getbeandefinitionnames 返回bean在工廠中定義的名稱。bean在工廠中定義...