Spring
一. Spring Framework
Spring 是一個輕量級框架,目的是為了讓物件之間的耦合性降低(解耦),方便后期代碼的維護;
Spring 本質上就是一個 Bean 工廠,應用程式中所有的物件生命周期都是由 Spring 來管理的;
二. Spring 中物件的注入方式
-
set 注入(物體類中的屬性必須有 set 方法)
<bean name="user" > <property name="userId" value="https://www.cnblogs.com/xiqingbo/p/1"></property> <property name="userName" value="https://www.cnblogs.com/xiqingbo/p/小溪"></property> <property name="userPass" value="https://www.cnblogs.com/xiqingbo/p/123"></property> </bean> -
構造方法注入(物體類中必須有帶引數的構造方法)
<bean name="user" > <constructor-arg index="0" value="https://www.cnblogs.com/xiqingbo/p/1"></constructor-arg> <constructor-arg index="1" value="https://www.cnblogs.com/xiqingbo/p/小悕"></constructor-arg> <constructor-arg index="2" value="https://www.cnblogs.com/xiqingbo/p/666"></constructor-arg> </bean>
三. Spring 物件模式
Spring 的組態檔中,一個 bean 標簽代表一個物件,創建的時候默認是采取單例模式,若想采取原型模式,則要給 bean 標簽加上
scope="prototype"
-
單例模式
public class Single { // 自身成為自身的靜態屬性 private static Single s = null; // 構造方法私有化 private Single() {} // 提供一個外部可訪問的靜態方法 public static synchronized Single getSingle() { if (s == null) { s = new Single(); } return s; } } -
原型模式
與單例模式相反,每次獲取的物件都是新的物件
-
工廠模式
根據組態檔,動態的獲取一組類中某個類的實體,一般來講這一組類都實作了同一個介面或繼承了同一個類
-
代理模式
- Hibernate 懶加載回傳的是一個代理物件
- Struts 的 action 代理
四. Spring 核心
- IOC(控制反轉)/ DI(依賴注入)
- AOP(面向切面編程)
IOC / DI
在沒有出現 Spring 框架之前,一個物件呼叫另一個物件的方法時,需要先在當前物件中創建出另一個物件,這些物件之間才有了關系(耦合性較高),而Spring 框架,應用程式中所有的物件都是由 Spring 容器來管理它們的生命周期,此時一個物件需要呼叫另一個物件的方法時,Spring 容器會把相對應的物件給你,則不需要在當前類創建新的物件
把 SessionFactory 物件注入到 Dao 層,把 Dao 層物件注入到 Service 層,把 Service 層物件注入到 Action 層
AOP
在程式運行到某一個點時(切入點),使程式暫時停下來,去執行人為切入的一段代碼,再繼續執行原來的業務邏輯代碼,切入的代碼并不會影響到原來業務邏輯代碼的執行,一般用于事務管理或日志管理
靜態工廠注入,實體工廠注入
五. Spring 的通知型別
- 前置通知:程式執行到切入點(Service 層的方法)之前執行切入的代碼
- 后置通知:程式執行到切入點(Service層的方法)之后執行切入的代碼
- 例外通知:切入點拋出例外
- 環繞通知
- 引入通知
六. SSH 框架整合
- 創建物體類,配置映射檔案,通過 Hibernate SchemaExport 物件創表
- 撰寫 Dao 層介面和實作類(封裝 BaseDao)
- 撰寫 Service 層介面和實作類
- 在
web.xml中配置 Struts2 的核心過濾器,創建 Action,并在struts.xml中配置 Action 資訊 - 在
web.xml中配置 Spring 的監聽器,并指定讀取的檔案路徑 - 在 Spring 的組態檔中配置:dataSource,sessionFactory,transactionManager(事務管理器),tx:advice(事務傳播特性),aop(面向切面編程)
七. Spring 容器什么時候被創建?
? Tomcat 服務器啟動的時候,會讀取web.xml組態檔,加載 Spring 的監聽器,Spring 監聽器此時就會去讀取 Spring 的組態檔(applicationContext.xml) 后實體化所有的物件
本文來自博客園,作者:Schieber,轉載請注明原文鏈接:https://www.cnblogs.com/xiqingbo/p/java-25.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/448067.html
標籤:Java
