1、Spring入門

項羽齊發表於2018-03-26

 

 

1. 課程 1-2

1.1. 看透軟體 1-2

1.2. 看透框架 1-2

1.3. 看透SPRING 1-2

1.4. Spring IOC基本應用 1-2

2. 課程內容 2-2

2.1. 看透軟體 2-2

2.2. 看透框架 2-3

2.3. 看透SPRING 2-3

3. Spring IOC 3-3

3.1. Spring IOC 概述 3-3

3.2. Spring IOC 程式設計 3-4

3.3. 基本步驟 3-4

3.4. 基本實現 3-4

3.4.1. 建立Java專案 3-4

3.4.2. 新增專案依賴 3-4

3.4.3. 新增配置檔案 3-4

3.4.4. 定義描述bean 3-5

3.4.5. 初始化spring容器 3-5

3.4.6. 獲取bean物件 3-6

3.5. Spring Bean物件 3-6

3.5.1. Bean物件的定義及初始化 3-6

3.5.2. Bean物件的作用域及生命週期 3-7

3.5.3. Bean物件的延遲載入 3-7

3.6. Spring Bean依賴 3-8

3.6.1. 依賴注入 3-8

4. 課程總結 4-10

4.1. 重點和難點分析 4-10

4.2. 常見FAQ 4-11

4.3. 作業 4-11

 

1. 課程目標

  1.1. 看透軟體

    軟體定義?

    軟體作用?

    軟體實現?

  1.2. 看透框架

    框架的定義

    框架在軟體中的一個定位

    框架應用的動機

  1.3. 看透SPRING

    Spring 是什麼

    Spring 應用場景

    Spring 應用理由

    Spring 基本應用

 

  1.4. Spring IOC基本應用

    Spring IOC 概述

    Spring IOC 容器

    Spring Bean 物件

 

2. 課程內容

  2.1. 看透軟體

    軟體的定義:程式和文件的集合

    程式:資料結構(線性結構,樹結構,圖結構)+演算法

    軟體解決的共性問題:IPO=輸入+處理+輸出

    網際網路永恆不變的的基本架構:C(Client)/S(Server)

  2.2. 看透框架

    框架(FrameWork):軟體中的一個半成品。

    框架要解決軟體中的什麼問題:共性問題(物件構建,物件持久化,應用架構)

    例如:

      1) Spring 能幫我們解決物件構建問題

      2) Spring MVC 能幫我們簡化MVC架構的處理過程

      3) MyBatis能幫我們更好的解決資料的持久化問題

      4) ……

  2.3. 看透SPRING

    Spring 是什麼? 輕量級的框架(Framework)

    Spring 應用動機? 從多個維度更好的解決問題(物件導向,面向切面,面向服務

    Spring 應用核心?IOCAOPMVC,。。。

 

 

 

3. Spring IOC 

 

  3.1. Spring IOC 概述

    Spring IOC Spring框架一個核心,稱之為控制反轉,嚴格來講就是我們將軟體專案中物件的建立以及管理交給Spring。當我們使用物件時,從spring容器獲取就可以了。

 

    FAQ?

      1) Spring 框架如何知道你寫了哪些類,哪些類的物件由spring管理。

      a) xml配置檔案的方式告訴它

      b) 以註解方式告訴它。

      2) Spring 會如何構建這些物件?(通過反射Class.forName(包名.類名”)

      3) Spring 會如何儲存這些物件?(底層會藉助map儲存物件)

 

  3.2. Spring IOC 程式設計

 

  3.3. 基本步驟

 

    step01:建立JAVA專案(CGB-SPRING-DAY01-IOC-01

    step02:新增SPRING依賴(建立lib目錄,然後將jar放入,新增到buildpath)

    step03:拷貝專案配置模板(直接放入src根目錄)

    step04:定義並配置bean物件(目前可以簡單理解為普通的java物件)

    step05:初始化SPRING容器,獲取我們需要的bean物件。

 

  3.4. 基本實現

     3.4.1. 建立Java專案

      在eclipse中建立一個java專案,命名為CGB-SPRING-DAY01-IOC-01

  3.4.2. 新增專案依賴

    下載jar包,並新增到專案的build path中。

   3.4.3. 新增配置檔案

 

 

  3.4.4. 定義描述bean

 

    在配置檔案中新增

           <bean id="date" class="java.util.Date"/>

 

 

  3.4.5. 初始化spring容器

 

    private static ClassPathXmlApplicationContext ctx;

      static{

      ctx=new ClassPathXmlApplicationContext(

      "applicationContext.xml");

    }

 

 

  3.4.6. 獲取bean物件

 

public static void main(String[] args) {

  System.out.println(ctx);

  Date date1=(Date)ctx.getBean("date");

  System.out.println(date1);

}

 

 

  3.5. Spring Bean物件

 

    3.5.1. Bean物件的定義及初始化

 

      Bean型別的建立:

        1) 訪問修飾符:public (儘量使用public

        2) 提供無參的建構函式(可以為私有)

        Bean 型別在xml檔案中的配置(通過idname屬性指定bean名稱,class屬性指定類全名)

          <bean id=”helloService” class=”bean.HelloService”/>

          說明:bean的這個名字必須具備全域性唯一性。

 

        Bean物件的初始化:(由spring工廠負責建立,並儲存到spring容器,例如map

          1) 直接通過無參建構函式構建

          2) 藉助型別的靜態工廠方法構建

          3) 藉助例項物件相關方法獲取物件

 

    3.5.2. Bean物件的作用域及生命週期

      Spring容器管理的Bean物件預設是單例作用域(singleton),假如希望每次獲取物件都要建立新的物件可以採用prototype作用域。

 

      Spring Bean物件的作用域可以通過Bean元素中的scope屬性進行指定,例如。

        將Bean作用域設定為singleton

<bean id="helloService" class="bean.HelloService" scope="singleton" init-method="doInit" destroy-method="doDestroy"/>

 

         Bean作用域設定為prototype

  <bean id="date"  class="java.util.Date" init-method="doInit" scope="prototype"/>

 

 

      其中Bean中的init-method,destroy-method屬性用於指定bean物件的生命週期方法,

        對於init-method屬性指定的方法會在物件構建完成以後自動呼叫。

        對於destory-method屬性指定的方法,假如bean的作用域是singleton,那在spring容器銷燬時會自動執行。

 

      FAQ?

        1.Spring 中的作用域的配置是從哪些維度解決軟體中的共性問題?

        1)物件建立(單例,多例)

        2)物件管理(單例物件會儲存到map,需要時從map獲取)

        3)物件銷燬 (單例物件會在容器銷燬時自動銷燬,然後被GC)

 

    3.5.3. Bean物件的延遲載入

      對於Spring而言,它管理的Bean物件預設情況下會在bean容器啟動時建立,並初始化。但是有些物件我們可能長時間不用,這樣就會造成一定

      的資源浪費。此時我們可以對這些Bean設定為延遲載入,所謂延遲載入就是在容器啟動時不會初始化它,只有在使用時才初始化。

      Bean物件延遲載入設定:

        1) bean元素內部設定(藉助lazy-init屬性 )

        2) beans根元素中設定(藉助default-lazy-init屬性)

 

    例如:

<bean id="helloService"  class="bean.HelloService" scope="singleton" init-method="doInit" destroy-method="doDestroy" lazy-init="true"/>

 

 

    FAQ: 物件的延遲載入是spring從哪些維度解決軟體中的共性問題。

      1) 記憶體使用(物件不使用時儘量先不要佔用內容)

      2) 應用效能 (結合場景,大物件頻繁就不適合延遲載入)

 

  3.6. Spring Bean依賴

    3.6.1. 依賴注入

      Spring 框架除了要實現對Bean物件的初始化以及管理,還要實現對這個Bean物件所依賴的屬性值的注入,常用的注入方式有set注入和構造注入。

 

4. 課程總結

4.1. 重點和難點分析

  1. Spring IOC 理解
  2. Spring Bean 物件初始化及依賴注入

 

4.2. 常見FAQ

  1. Spring 底層建立物件會藉助什麼技術?
  2. Spring Bean物件常用作用域有哪些?
  3. Spring Bean物件的延遲載入的實現目的是什麼?
  4. Spring Bean物件依賴注入的實現方式有哪些?
  5. ……

 

4.3. 作業

  1. 總結課堂知識點
  2. 完成課堂案例
  3. 預習Spring依賴(集合注入,自動裝配)
  4. 嘗試使用不同方式實現某個類單例設計(單例模式,至少5種)
  5. 嘗試自己構建一個Spring工廠(xmlbean),例如ApplicationContext.

相關文章