在idea種構建簡單的spring項目,默認會下載所許jar
然後創建測試用的service層與dao層,做了一個簡單的實現接口中打印方法
在src目錄下創建bean.xml
創建一個測試類,輸出spring創建的對象
打印結果如下:
關於bean創建的兩種規則
beanFactory 提供一種延遲加載的思想來創建bean對象,bean什麼時候使用就什麼時候創建
applicationContext 只要文件解析完,則立馬創建bean對象
示例:
給實現添加構造方法,創建對象則輸出一句話
運行測試代碼,applicationContext創建bean的方式
使用beanFatory創建bean對象,debug發現加載完消滅了文件後並沒有創建bean對象
當使用該bean時,才調用
bean創建的三種方式
1.調用默認的構造方法創建,如果沒有則創建失敗
2.使用工廠中的方法創建對象
創建成功
3.使用實例工廠創建bean對象
測試成功
bean的作用範圍:
可以通過配置的方式調整作用範圍 ,配置的屬性,bean的scope標籤
屬性的取值
singleton 單例(默認)
prototype 多例(spring接管struts2的時候,需要配置此值)
request (一次請求和轉發)
session (一次會話)
globalsession (一次全局會話 服務器集群使用)
示例:
單例
多例:
bean的生命週期
單例bean生命週期:
測試:(注意多態概念)
所以單例中bean對象隨著容器的創建,存在,銷燬而相應的變化
多例:
沒有實施銷燬方法,只有等待垃圾回收機制的觸發
關於bean注入DI
構造函數注入
、
測試:
set方法注入
測試:
註解分為以下幾種:
1.用於創建bean對象 @Component 相當於bean.xml中的bean標籤
xml文件配置
由此註解衍生以下三個註解(繼承關係,引用父類Component的功能)只是表現形式不一樣,沒有其他任何區別
2.用於注入數據(bean對象)
需要注意的時Autowrid不加@Qualifier時 註解的對象只能存在唯一的,而不是存在多個ICustomerDaoImpl 或者使用Resource指定bean的ID
注入基本數據類型
控制bean的作用範圍
控制bean的生命週期
其他註解
閱讀更多 十二說IT 的文章