1. 程式人生 > >Spring學習(三)

Spring學習(三)

(一)Spring基於AspectJ的註解的AOP開發

(1)建立專案 引入jar包 編寫目標類,切面類,在Spring中進行bean配置 (2)在配置檔案中開啟註解的AOP開發 在這裡插入圖片描述 (3)切面類AOP配置 注意要在類上打Aspect註解 在這裡插入圖片描述 前置通知 後置通知 在這裡插入圖片描述 環繞通知 在這裡插入圖片描述

異常和最終 在這裡插入圖片描述

切入點註解:(把切入點公式配置成如下,則可以在上面的各種通知中替代) 在這裡插入圖片描述

實現介面,使用JDK代理,不實現介面用的是cglib

(二)Spring JDBC的模板使用

1、引入jar(mysql連線和spring jdbc) 2、在這裡插入圖片描述

3、將連線池和模板交給Spring 在這裡插入圖片描述

(三)Spring事務管理

1、PlatformTransactionManager介面 平臺事務管理器:介面,管理事務的真正物件 DataSourceTransactionManager JDBC管理事務 HibernateTransactionManager Hibernate管理事務 2、TransactionDefinition事務定義資訊 介面 定義事務的相關資訊,隔離級別,超時資訊,傳播行為,是否只讀 3、TransactionStatus 事務的狀態 介面 事務狀態:用於記錄在事務管理過程中,事務的狀態的物件

關係 平臺事務管理器根據事務定義資訊進行事務的管理,在事務管理過程中產生各種狀態,將狀態資訊記錄到事務狀態物件中

Service A( ){ Dao.a Dao.b } Service B(){ A() Dao.c Dao.d }

例如現在一個service方法叫A,另一個service方法叫B 並且在B呼叫A。 事務的傳播行為,用來解決業務層相互呼叫的問題(7種,主要是3個) 1、保證多個操作在同一事務 PROPAGATION_REQUIRED 預設值,如果A有事務,使用A的事務,並且包含B,如果沒有則建立新的並且包含A。(全部包含到一起) PROPAGATION_SUPPORTS 支援事務,A有事務則用A(包在一起),沒有則不用了。 PROPAGATION_MANDATORY A有則用A(包在一起),沒有則丟擲異常 2、保證多個操作不在同一事務

PROPAGATION_REQUIRE_NEW 如果A有,則掛起(取消A的事務),建立新的事務只包含我自身,沒有則建立新的包含自己。(創新新的包含B,A的取消事務) PROPAGATION_NOT_SUPPORTED 非事務,如果A有事務,掛起,不使用事務。(全部不用事務) PROPAGATION_NEVER A有事務,直接丟擲異常 3、巢狀事務 PROPAGATION_NESTED 巢狀事務,如果A有事務,按照A的事務執行後設置儲存點,執行B操作,沒有異常則通過。如果有異常,可以選擇回滾到最初位置或者儲存點。

事務管理 一、程式設計式管理(手動編寫程式碼)(瞭解) 1.平臺管理器 在這裡插入圖片描述 2.事務管理模板,簡化程式碼 在這裡插入圖片描述

3. 編寫事務程式碼,service注入事務管理的模板 在這裡插入圖片描述 4.Service的呼叫 在這裡插入圖片描述

二、宣告式事務(XML配置實現)

1、引入AOP開發包 2、配置事務管理器,引入上面的dataSource配置 在這裡插入圖片描述 3、配置增強(切面類),事務管理的規則 在這裡插入圖片描述 4、切面類應用到目標類 aop配置 在這裡插入圖片描述 三、宣告式事務(註解實現) 1.導包 2.配置事務管理器 xml裡面配跟上面一樣 3.開啟註解事務 在這裡插入圖片描述 4.業務層添加註解

在這裡插入圖片描述