1. 程式人生 > >Spring入門小知識

Spring入門小知識

一 Spring概念


1 優點

1.1 一站式(full-stack)輕量級的開源框架

    輕量級:可以更合理的分配資源,使用最合適最小的資源完成當前需求

    一站式:可以對dao、service、web層都提供支援

1.2 兩大核心功能:

                a. IOC (Inverse Of Control)

                          把建立物件的權利交給Spring,以被動接受的方式獲取物件的思想

                          步驟一:通過讀取配置檔案來反射建立物件

                          步驟二:將所有建立的物件存到Map中,方便使用時獲取

                          這個Map稱為容器,也可以用List來代替,但是Map更方便查詢

                         避免了 new ,實現了程式間解耦,提高執行效率,減小伺服器壓力

                b. AOP (Aspect Oriented Programming)

1.3 能夠整合各種第三方框架

1.4 解耦,簡化開發,避免硬編碼,將物件間的依賴關係交由Spring進行控制。

        什麼叫解耦?

       編譯時不依賴,執行時依賴。

     解決方法:

       第一種: 利用反射

       第二種: 提供配置檔案,用工廠來生產物件

1.5 AOP程式設計

1.6 宣告式事務

2 BeanFactory 和 ApplicationContext 的區別

2.1 BeanFactory 是 Spring 容器中的頂層介面且物件只在使用的時候才會建立

2.2 ApplicationContext

      是BeanFactory的子介面只要一讀取配置檔案,預設建立物件。

     其實現類:

         a. ClassPathXmlApplicationContext

            從類的根路徑下架在配置檔案(通常使用)

         b. FileSystemXmlApplicationContext

            從磁碟路徑上載入配置檔案,檔案可以在磁碟任意位置

         c. AnnotationConfigApplicaionContext

           使用註解配置容器物件時,用該類建立Spring容器。讀取註解

3 bean 標籤

3.1 作用

      提供配置給spring建立物件,預設呼叫類中的無參構造。

3.2 屬性

      id : 物件在容器中的唯一標識

      class : 類的全限定類名,用來反射建立物件

      scope : 物件的作用範圍

·     singleton 預設值,單例

                    作用範圍:

                     一個應用只有一個物件的例項,作用範圍時整個引用

                   生命週期:

                    物件出生---應用載入,建立容器時

                    物件生存---容器在就一直存活

                   物件銷燬---應用解除安裝,銷燬容器時

·    prototype 多例

                  作用範圍:

                  每次訪問物件時,都會重新建立物件例項

                  生命週期:

                  物件出生---使用物件時

                 物件生存---只要物件在使用就一直存活

                 物件銷燬---物件長時間不使用時,被GC回收

    ·factory-method 指定生產物件的方法

    · request web專案,將spring建立的物件存入request中

     `session web專案,將spring建立的物件存入session中

    `·global session web專案,在Portlet環境中應用,如沒有,相當於session

    ·init-method 指定類中的初始化方法名稱

    ·destrory-method 指定累中銷燬方法名稱

3.3 bean 例項化的三種方式

       1) 預設使用無參構造

       2)spring管理靜態工廠

      3)spring管理例項工廠

4 依賴注入(DI Dependency Injection)

4.1 概念

          A is B : A 實現了 B 或者 A 繼承了 B ,即 A 就是 B

          A has B : A 的物件中有一個私有屬性B , 就是A 依賴 B

         依賴注入就是給物件中的屬性賦值。常用的方式由set注入和構造方法注入。

4.2 set方法注入

         如果是自己寫的類,或者簡單屬性可以直接賦值,但是如果屬性是框架中的,

         就無法直接賦值,只能通過自己或者spring呼叫set方法來賦值。

        spring 中使用<bean>下的<property name=""  value=""> 來為屬性賦值

4.3 構造方法注入

        spring 中使用<bean>下的<constructor-arg name=""  value=""> 來為屬性賦值,

        類中需要提供一個對相應引數的建構函式

4.4 P名稱名稱空間注入

      本質呼叫set方法,基本不用

4.5 注入集合屬性

       String[] arg :

                      <property name="...">

                             <array>

                                   <value>...</value>

                           </array>

                      </property>

       Set<?>

                     <property name="...">

                            <set>

                                <value>...</value>

                            </set>

                     </property>

       List<?>

                    <property name="...">

                            <list>

                                <value>...</value>

                           </list>

                    </property>

       Map<?,?>

               <property name="...">

                        <map>

                                 <entry key="..." value="..."></entry >

                                <entry key="..." >...</entry >

                        </map>

             </property>

      Properties

              <property name="...">

                       <props>

                       <prop key="...">...</prop>

                      </props>

             </property>