Spring對bean的管理細節:

   1.創建bean的三種方式:  1)使用默認構造函數創建。在spring的配置文件中bean標籤,配以id和class屬性之後,且沒有其他屬性和標籤時,採用的就是默認構造函數創建bean對象,此時如果類中沒有默認構造函數,則對象無法創建。

   2)使用普通工廠中的方法創建對象(使用某個類中的方法創建對象,並存入spring容器)

   3)使用工廠中的靜態方法創建對象(使用某個類中的靜態方法創建對象,並存入spring容器) 

   2.bean的作用範圍調整

       bean標籤的scope屬性:

             作用:用於指定bean的作用範圍

             取值: 常用的就是單例的和多例的

                    singleton:單例(默認值)

                    prototype:多例的

                    request:作用於web應用的請求範圍

                    session:作用於web應用的會話範圍

                    global-session:作用於集羣環境的會話範圍(全局會話範圍),當不是集羣環境時,它就是session

      3.bean對象的生命週期

           單例對象:

           出生:當容器創建時對象出生

           活着:只要容器還在,對象一直活着

           死亡:容器銷燬,對象消亡

           總結:單例對象的生命週期和容器相同

           多例對象:

            出生:當使用對象時spring框架 為我們創建

            活着:對象只要是在使用過程中就一直活着。

            死亡:當對象長時間不用,且沒有別的對象引用時,由java的垃圾回收器回收

     spring中的依賴注入

         依賴注入:Dependency  Injection

              IOC的作用:降低程序間的耦合(依賴關係) 依賴關係的管理:以後都交給spring來維護  

            在當前類需要用到其他類的對象,由spring為我們提供,我們只需在配置文件中説明

        依賴關係的維護:就稱之為依賴注入

        依賴注入:能注入的數據:有三類:

                     基本類型和String

                     其他bean類型(在配置文件中或者註解配置過的bean)

                     複雜類型/集合類型

            注入的方式:有三種

                第一種:使用構造函數提供

                第二種:使用set方法提供

                第三種:使用註解提供

<!--構造函數注入:

使用的標籤:constructor-arg
   標籤出現的位置:bean標籤的內部
   標籤中的屬性:
   type:用於指定要注入的數據的數據類型,該數據類型也是構造函數中某個或某些參數的類型
   index:用於指定要注入的數據給構造函數中指定索引位置的參數賦值。索引位置從0開始。
   name:用於指定給構造函數中指定名稱的參數賦值  常用的
   ========以上三個用於指定給構造函數中哪個參數賦值==============
   value:用於提供基本類型和String類型的數據
   ref:用於指定其他的bean類型數據。它指的就是在spring的Ioc核心容器中出現過的bean對象
     優勢:在獲取bean對象時,注入數據是必須的操作,否則對象無法創建成功。
     弊端:改變了bean對象的實例化方式,使我們在創建對象時,如果用不到這些數據,也必須提供。
 -->

 

<!--set方法注入     更常用的方式
   涉及的標籤:property
   出現的位置:bean標籤內部
   標籤的屬性:
  name:用於指定注入時所調用的set方法名稱
  value:用於提供基本類型和String類型的數據
  ref:用於指定其他的bean類型數據。它指的就是在spring的Ioc核心容器中出現過的bean對象
  優勢:
    創建對象時沒有明確的限制,可以直接使用默認構造函數
  弊端:

如果有某個成員必須有值,則獲取對象時有可能set方法沒有執行。
 --> 
<!--複雜類型的注入/集合類型的注入
    用於給List結構集合注入的標籤:
      list array set
    用於給Map結構集合注入的標籤:
    map props
    結構相同,標籤可以互換
 -->