首頁>技術>

1.3.1 Spring的概述

1.3.1.1 什麼是Spring

· Spring:SE/EE開發的一站式框架。

· 一站式框架:有EE開發的每一層解決方案。

· WEB層:SpringMVC

· Service層:Spring的Bean管理,Spring宣告式事務

· DAO層:Spring的Jdbc模板,Spring的ORM模組

1.3.1.2 為什麼學習Spring

1.3.1.3 Spring的版本

Spring3.x和Spring4.x

1.3.2 Spring的入門(IOC)

1.3.2.1 什麼IOC

· IOC: Inversion of Control(控制反轉)。

· 控制反轉:將物件的建立權反轉給(交給)Spring。

1.3.2.2 下載Spring的開發包

官網:

1.3.2.3 解壓Spring的開發包

· docs:Spring的開發規範和API

· libs:Spring的開發的jar和原始碼

· schema:Spring的配置檔案的約束

1.3.2.4 建立web專案,引入jar包

1.3.2.5 建立介面和類

· 問題:

· 如果底層的實現切換了,需要修改原始碼,能不能不修改程式原始碼對程式進行擴充套件?

1.3.2.6 將實現類交給Spring管理

在spring的解壓路徑下spring-framework-4.2.4.RELEASE\\docs\\spring-framework-reference\\html\\\\xsd-configuration.html

1.3.2.7 編寫測試類

1.3.2.8 IOC和DI(*****)

· IOC:控制反轉,將物件的建立權反轉給了Spring。

· DI:依賴注入,前提必須有IOC的環境,Spring管理這個類的時候將類的依賴的屬性注入(設定)進來。

· 面向物件的時候

· 依賴

Class A{

}

Class B{

public void xxx(A a){

}

}

· 繼承:is a

Class A{

}

Class B extends A{

}

· 聚合:has a

1.4 Spring的工廠類

1.4.1 Spring的工廠類

1.4.1.1 Spring工廠類的結構圖

· ApplicationContext繼承BeanFactory。

1.4.1.2 BeanFactory:老版本的工廠類

· BeanFactory:呼叫getBean的時候,才會生成類的例項。

1.4.1.3 ApplicationContext:新版本的工廠類

· ApplicationContext:載入配置檔案的時候,就會將Spring管理的類都例項化。

· ApplicationContext有兩個實現類

· ClassPathXmlApplicationContext:載入類路徑下的配置檔案

· FileSystemXmlApplicationContext:載入檔案系統下的配置檔案

1.5 Spring的配置

1.5.1 XML的提示配置

1.5.1.1 Schema的配置

1.5.2 Bean的相關的配置

1.5.2.1 <bean>標籤的id和name的配置

· id:使用了約束中的唯一約束。裡面不能出現特殊字元的。

· name:沒有使用約束中的唯一約束(理論上可以出現重複的,但是實際開發不能出現的)。裡面可以出現特殊字元。

· Spring和Struts1框架整合的時候

· <bean name="/user"/>

1.5.2.2 Bean的生命週期的配置(了解)

· init-method:Bean被初始化的時候執行的方法

· destroy-method:Bean被銷燬的時候執行的方法(Bean是單例建立,工廠關閉)

1.5.2.3 Bean的作用範圍的配置(重點)

· scope:Bean的作用範圍

· singleton:預設的,Spring會採用單例模式建立這個物件。

· prototype:多例模式。(Struts2和Spring整合一定會用到)

· request:應用在web專案中,Spring建立這個類以後,將這個類存入到request範圍中。

· session:應用在web專案中,Spring建立這個類以後,將這個類存入到session範圍中。

· globalsession:應用在web專案中,必須在porlet環境下使用。但是如果沒有這種環境,相對於session。

1.6 Spring的Bean管理(XML方式)

1.6.1 Spring的Bean的例項化方式(了解)

Bean已經都交給Spring管理,Spring建立這些類的時候,有幾種方式:

1.6.1.1 無參構造方法的方式(預設)

· 編寫類

· 編寫配置

1.6.1.2 靜態工廠例項化的方式

· 編寫Bean2的靜態工廠

· 配置

1.6.1.3 例項工廠例項化的方式

· Bean3的例項工廠

· 配置

1.6.2 Spring的屬性注入

1.6.2.1 構造方法的方式的屬性注入

· 構造方法的屬性注入

1.6.2.2 Set方法的方式的屬性注入

· Set方法的屬性注入

· Set方法設定物件型別的屬性

1.6.2.3 P名稱空間的屬性注入(Spring2.5以後)

· 通過引入p名稱空間完成屬性的注入:

· 寫法:

· 普通屬性p:屬性名="值"

· 物件屬性p:屬性名-ref="值"

· P名稱空間的引入

· 使用p名稱空間

1.6.2.4 SpEL的屬性注入(Spring3.0以後)

· SpEL:Spring Expression Language,Spring的表示式語言。

· 語法:

· #{SpEL}

1.6.3 集合型別屬性注入(了解)

1.6.3.1 配置

<bean id="collectionBean" class="com.itheima.spring.demo5.CollectionBean">

<property name="arrs">

<list>

<value>王東</value>

<value>趙洪</value>

<value>李冠希</value>

</list>

</property>

<property name="list">

<list>

<value>李兵</value>

<value>趙如何</value>

<value>鄧鳳</value>

</list>

</property>

<property name="set">

<set>

<value>aaa</value>

<value>bbb</value>

<value>ccc</value>

</set>

</property>

<property name="map">

<map>

<entry key="aaa" value="111"/>

<entry key="bbb" value="222"/>

<entry key="ccc" value="333"/>

</map>

</property>

</bean>

1.7 Spring的分模組開發的配置

1.7.1 分模組配置

1.7.1.1 在載入配置檔案的時候,載入多個

1.7.1.2 在一個配置檔案中引入多個配置檔案

1.8 CRM的綜合案例

1.8.1 程式碼實現

1.8.1.1 建立資料庫和表

1.8.1.2 建立web專案,引入jar包

· 引入struts2的開發的jar包

· 引入struts2的配置檔案

· web.xml

· struts.xml

1.8.1.3 引入頁面

1.8.1.4 編寫Action類

1.8.1.5 配置Action

1.8.1.6 修改頁面提交到Action

1.8.1.7 編寫Action的save方法

· 不在Action中直接建立Service,將Service交給Spring管理。

· 建立Service介面和實現類

1.8.1.8 引入Spring的環境

· 引入jar包

· 引入配置檔案

1.8.1.9 將Service交給Spring

1.8.1.10 在Action中呼叫Service

1.8.1.11 編寫DAO並且完成配置

· 編寫DAO的介面和實現類

· 將DAO交給Spring管理

1.8.1.12 在Service中使用DAO

1.8.2 問題描述

1.8.2.1 程式問題

· 每次請求都會建立一個Spring的工廠,這樣浪費伺服器資源,應該一個專案只有一個Spring的工廠。

· 在伺服器啟動的時候,建立一個Spring的工廠。

· 建立完工廠,將這個工廠類儲存到ServletContext中。

· 每次使用的時候都從ServletContext中獲取。

· *****使用ServletContextListener

· 監聽ServletContext物件的建立和銷燬。

1.8.2.2 解決方案:使用Spring核心監聽器ContextLoaderListener(整合web專案)

· 引入jar包

spring-web.jar

· 配置監聽器

· 在Action中獲取工廠

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 一文看懂Java設計模式