Spring基礎使用(三)-------XML定義AOP的使用
預編譯方式:AspectJ
動態代理方式(JDK動態代理,CGLIB動態代理):Spring AOP,JbossAOP
2、基本概念切面(Aspect):對程式進行切割的類,描述切割的點和切割前後需要執行的動作。
連線點(Joinpoint):符合切入點條件的某個具體的點。
通知(Advice):對應切面中要執行的某個動作。
切入點(Pointcut):切面要切割程式的位置。
引入(Introduction):
目標物件(Target Object):被切割的物件
3、通知的型別前置通知(Before advice):在連線點之前執行的通知。前置通知不能阻止連線點的執行,除非丟擲異常。
後置通知(After advice):在連線點之後執行的通知。
返回後通知(After returning advice):在連線點正常完成退出後執行的通知。
異常後通知(After throwing advice):在連線點丟擲異常退出後執行的通知。
環繞通知(Around advice):包圍連線點的通知,可以在連線點前後執行某些操作。
4、常用切入點表示式執行所有的public方法:
`execution(public * *(..))`
執行所有以set開始的方法:
`execution(* set*(..))`
執行HelloSpringService類中的所有方法:
`execution(* com.learn.service.HelloSpringService.*(..))`
執行service包中的所有方法:
`execution(* com.learn.service..(..))`
執行service包及子包下的所有方法:
`execution(* com.learn.service...(..))`
5、程式示例 xml檔案中新增對aop的支援
宣告切面,切面中新增切入點和通知
<!--前置通知--> <!--返回後通知--> <!--後置通知--> <!--異常後通知--> <!--無參環繞通知--> <!--帶參環繞通知-->
切面類
public class MyAspect {
public void beforeAdvice()
{
System.out.println("beforeAdvice | before advice");
}
public void afterReturning()
{
System.out.println("afterReturning | after returning advice");
}
public void afterAdvice()
{
System.out.println("afterAdvice | after advice");
}
public void afterThrowing()
{
System.out.println("afterThrowing | after throwing advice");
}
public void aroundAdvice(ProceedingJoinPoint pdj) throws Throwable
{
System.out.println("aroundAdvice | 1 around advice");
pdj.proceed();
System.out.println("aroundAdvice | 2 around advice");
}
public void aroundAdvice2(ProceedingJoinPoint pdj, String word) throws Throwable
{
System.out.println("aroundAdvice2 | 1 around advice");
pdj.proceed();
System.out.println("aroundAdvice2 | 2 around advice");
}
}
6、Introductions Introductions為匹配到的Bean型別增加一個父類介面,並在指定的類中增加該介面的實現細節。
xml配置
介面
package learn.interfaces;
public interface Singer {
void sing();
}
實現類
package learn.service;
import learn.interfaces.Singer;
public class SingerImpl implements Singer {
public void sing() {
System.out.println("sing a song!!");
}
}
驗證程式
Singer helloService = (Singer) context.getBean("helloService");
helloService.sing();
輸出
sing a song!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2157/viewspace-2800716/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring 定時器的使用—Xml、Annotation、自定義Spring定時器XML
- Spring 定時器的使用---Xml、Annotation、自定義Spring定時器XML
- 面向切面的Spring(二) xml中定義aopSpringXML
- Spring原始碼系列(三)--spring-aop的基礎元件、架構和使用Spring原始碼元件架構
- Spring基礎使用(一)--------IOC、Bean的XML方式SpringBeanXML
- Spring基於XML方式的使用SpringXML
- Spring AOP基於xml的方式實現SpringXML
- Spring中基於XML方式的AOP操作SpringXML
- Spring AOP基礎簡介Spring
- Spring系列.AOP使用Spring
- Spring核心思想之 AOP:在自定義容器基礎上實現AOP功能Spring
- C語言基礎-2、函式的定義與使用C語言函式
- Python基礎入門(5)- 函式的定義與使用Python函式
- Spring基礎只是—AOP的概念介紹Spring
- SpringBoot基礎篇AOP之高階使用技能Spring Boot
- 基於Spring-AOP的自定義分片工具Spring
- 03 . Vue基礎之計算屬性,元件基礎定義和使用Vue元件
- Spring AOP快速使用教程Spring
- DataBinding基礎使用三
- 從XML配置角度理解Spring AOPXMLSpring
- Spring(4)-AOP使用細節Spring
- Spring WebFlux 基礎教程:WebSocket 使用SpringWebUX
- 死磕Spring之AOP篇 - Spring AOP註解驅動與XML配置SpringXML
- XML Schema定義XML
- 使用JAXP對xml文件進行DOM解析基礎XML
- 在Spring Boot框架中使用AOPSpring Boot框架
- Spring Boot使用AOP的正確姿勢Spring Boot
- Spring Boot 基礎: 使用 `@ConfigurationProperties` 實現自定義屬性的自動裝配Spring Boot
- Spring Boot基礎教程:EhCache快取的使用Spring Boot快取
- JAVA-Spring AOP基礎 - 代理設計模式JavaSpring設計模式
- Spring系列第四講 xml中bean定義詳解SpringXMLBean
- React基礎-定義元件React元件
- 使用AOP+自定義註解完成spring boot的介面許可權校驗Spring Boot
- XML基礎XML
- 4、Spring+AOP介紹與使用Spring
- Golang 基礎之函式使用 (三)Golang函式
- Azure 基礎 : 使用 Automation 定時開機
- 基於AOP的MVP框架(一)GoMVP的使用MVP框架Go