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...