spring:《spring实战》读后感三
1.AOP術語:
通知(Advice)
? ? 切面的工作被稱為通知。同時通知還解決了何時執行這個工作。
? ??Spring切面可以應用5種類型的通知:
? ? ? ? ? 前置通知(Before) : 在目標方法被調用之前調用通知功能;
? ? ? ? ? 后置通知(After) : 在目標方法完成之后調用通知, 此時不會關心方法的輸出是什么;
? ? ? ? ? 返回通知(After-returning) : 在目標方法成功執行之后調用通知;
? ? ? ? ? 異常通知(After-throwing) : 在目標方法拋出異常后調用通知;
? ? ? ? ? 環繞通知(Around) : 通知包裹了被通知的方法, 在被通知的方法調用之前和調用之后執行自定義的行為;
切點(pointcut)
? ? ? ?一個切面并不需要通知應用的所有連接點。 切點有助于縮小切面所通知的連接點的范圍。
連接點(join point)
? ??連接點是在應用執行過程中能夠插入切面的一個點。
切面(Aspect)
??切面是通知和切點的結合。 通知和切點共同定義了切面的全部內容——它是什么, 在何時和何處完成其功能。
織入(Weaving)
? ?織入是把切面應用到目標對象并創建新的代理對象的過程。 切面在指定的連接點被織入到目標對象中。 在目標對象的生命周期里有多個點可以進行織入:
? ? ? 編譯期: 切面在目標類編譯時被織入。 這種方式需要特殊的編譯器。 AspectJ的織入編譯器就是以這種方式織入切面的。
? ? ? 類加載期: 切面在目標類加載到JVM時被織入。 這種方式需要特殊的類加載器(ClassLoader) , 它可以在目標類被引入應用之前增強該目標類的字節碼。 AspectJ 5的加載時織入(load-timeweaving, LTW) 就支持以這種方式織入切面。
? ? ?運行期: 切面在應用運行的某個時刻被織入。 一般情況下, 在織入切面時, AOP容器會為目標對象動態地創建一個代理對象。Spring AOP就是以這種方式織入切面的。
?
2.Spring提供了4種類型的AOP支持:
? ??基于代理的經典Spring AOP;
? ? 純POJO切面;
? ? @AspectJ注解驅動的切面;
? ? 注入式AspectJ切面(適用于Spring各版本)
?
3.Spring AOP所支持的AspectJ切點指示器
? ? ? ?Spring借助AspectJ的切點表達式語言來定義Spring切面
| AspectJ指 示器 | 描 述 |
| arg() | 限制連接點匹配參數為指定類型的執行方法 |
| @args() | 限制連接點匹配參數由指定注解標注的執行方法 |
| execution() | 用于匹配是連接點的執行方法 |
| this() | 限制連接點匹配AOP代理的bean引用為指定類型的類 |
| target | 限制連接點匹配目標對象為指定類型的類 |
| @target() | 限制連接點匹配特定的執行對象, 這些對象對應的類要具有指定類 型的注解 |
| within() | 限制連接點匹配指定的類型 |
| @within() | 限制連接點匹配指定注解所標注的類型(當使用Spring AOP時, 方 法定義在由指定的注解所標注的類里) |
| @annotation | 限定匹配帶有指定注解的連接點 |
4.使用注解創建切面
? ??使用注解來創建切面是AspectJ 5所引入的關鍵特性。AspectJ面向注解的模型可以非常簡便地通過少量注解把任意類轉變為切面。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Spring使用AspectJ注解來聲明通知方法
| 注 解 | 通 知 |
| @After | 通知方法會在目標方法返回或拋出異常后調用 |
| @AfterReturning | 通知方法會在目標方法返回后調用 |
| @AfterThrowing | 通知方法會在目標方法拋出異常后調用 |
| @Around | 通知方法會將目標方法封裝起來 |
| @Before | 通知方法會在目標方法調用之前執行 |
? ? ? ?@Pointcut注解能夠在一個@AspectJ切面內定義可重用的切點。
? ??
總結
以上是生活随笔為你收集整理的spring:《spring实战》读后感三的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构:希尔排序(shell sort
- 下一篇: 数据结构:基数排序(Radix sort