Spring應用級學習 從Ioc開始

2021-07-14 02:41:28 字數 2681 閱讀 9732

spring前面一陣已經有了很多次的使用,為了解決前一陣專案中的種種疑惑,開始「應用層面」的學習。

基本注入方式很簡單,包括:

id是 ioc 容器中 bean 的唯一標識,命名規則需要滿足 xml 的規定:以字母開頭後面跟完整結束符(full stops)。name為 bean 的名字,沒有字元限制。

// 可以指定多個 name 和 id,分隔符為逗號

"#tom,#carry"/>

即沒有 id 的 bean。如何獲得匿名 bean?通過#index來獲得對應的 bean

class="com.bean.bean" />

class="com.bean.bean" />

class="com.bean.bean" />

// 獲得第 1 個 bean

getbean("com.bean.bean");

// 獲得第 2 個 bean

getbean("com.bean.bean#1");

// 獲得第 3 個 bean

getbean("com.bean.bean#1");

有兩種方式進行匹配,如果沒有指定匹配的方式,則預設選擇型別匹配

工廠類分為:靜態工廠方法注入和非靜態工廠方法注入

// 非靜態

"beanfactory"

class="com.bean.beanfactory" />

"non-static"

class="com.bean.goods" factory-bean="beanfactory" factory-method="getinstance" />

// 靜態(其中 class 必須為工廠類,getinstance() 為靜態方法)

"non-static"

class="com.bean.beanfactory" factory-method="getinstance" />

引數中含有特殊字元

在 xml 檔案中不能含有:""<>&,當遇到這樣的字元值時,有兩種處理辦法

null 值

可以在注入的時候賦值為null

value>

使用級聯

// 呼叫 car.setname() 來對 car.name 進行賦值

"car.name"

value="bmw" />

使用對陣列進行注入

set 與 list 標籤有一點不同,set 注入的時候,元素不允許有重複

當使用方法獲取物件進行注入的時候,可以使用下面方式

lookup方法注入

通過這種方式,實現每次獲得的 bean 均為乙個新例項化的 bean

id="bmw-car"

class="inectfunc.car"

scope="prototype">

name="brand"

value="bmw"/>

name="price"

value="100"/>

bean>

id="magic-boss"

class="inectfunc.magicboss">

name="getcar"

bean="bmw-car"/>

bean>

replace方法替換

很少用到,用於將乙個建立物件的方法進行替換

bean 的作用域一共有四個,這裡只介紹兩個

@repository、@service、@controller、@component為類註解,註解的類都會轉化為被 spring 管理的 bean。

@component("userdao")

// 等效於

"userdao"

class="com.bean.userdao" />

@autowired與@autowired(required=false)

@autowired 註解被掃瞄後,將從容器中尋找該型別的例項,如果沒有找到則報錯「nosuchbeandefinitionexception」,如果使用了required=false,則在找不到的情況下不報錯

其他註解

@configuration為類註解,標註了的類為 spring 配置類。其方法前使用了 @bean 後,該方法的返回物件將自動被 spring ioc 容器管理起來。

@qualifier(「userdao」)指明容器中的乙個 bean 的 id 號

@scope 標註 bean 的作用域

相關**已經同步到我的 github 專案中

參考資料: spring 3.x 企業應用開發實戰

spring例項應用(IoC

今天初步學習了下spring框架,現在把學習過程總結一下。一 建立專案 1 專案結構圖 2 工程配置檔案web.xml contextconfiglocation org.springframework.web.context.contextloaderlistener 3 建立業務邏輯介面 pac...

Spring學習筆記 IoC

getbean 方法 引數為class時要保證配置檔案中bean唯一 構造器注入 通過constructor arg節點注入 工廠方法注入 很少使用 繼承 通過在bean中新增屬性parent指定繼承的父bean,也可以忽略父 bean 的 class 屬性,此時 abstract屬性 必須設為 t...

Spring學習總結IOC

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