1. 什麼是AOP?
核心思想:動態的添加和刪除切面上的邏輯而不影響原來的執行代碼。
面向切面編程(AOP)完善spring的依賴注入,在spring中主要表現爲兩個方面:
》》面向切面編程提供聲明式事務管理
》》spring支持用戶自定義的切面
面向切面編程是對面向對象編程的補充。將程序的運行過程分解成各個切面。
兩個特徵:
》》各個步驟之間良好的隔離性
》》源代碼無關性
spring的事務管理實現的原理,就是通過一個動態代理對所有需要事務管理的Bean進行加載,並根據配置在invoke方法中對當前調用的方法名進行判定,並在method.invoke方法前後爲其加上合適的事務管理代碼,這樣就實現了spring式的事務管理。
相關概念:
JoinPoint: 連接點,加入切面邏輯的位置(程序執行過程中明確的點,如方法調用或者特定的異常被拋出。)
@Before("execution(* com.spring.service..*.*(..))")
PointCut: 切入點。JoinPoint的一個集合。指定一個通知將被引發的一系列的連接點的集合。
@Pointcut("execution(* com.spring.service..*.*(..))")
public void myMethod(){};
@Before("myMethod()")
public void before(){
System.out.println("before");
}
---------------------
作者:半壁燈
來源:CSDN
原文:https://blog.csdn.net/VirusLL/article/details/76099685
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!
Aspect:切面類,方面,
Advice:通知。在特定的連接點,AOP框架執行的動作。切面點上的業務邏輯 @Before;@AfterReturning; ......
Target:被代理或者被通知的對象。包含連接點的對象。POJO
Weave: 織入。將切面邏輯添加到原來執行代碼的過程
Struts2中的攔截器就是AOP的一種實現。
參考:https://www.cnblogs.com/superjt/p/4275462.html
https://blog.csdn.net/MoreeVan/article/details/11977115
2.什麼是IOC
控制反轉,一種設計思想,將你設計好的對象交給容器(spring容器)控制,而不是傳統的在你的對象內部直接控制。創建對象的控制權轉移。
IOC和DI:同一個概念的不同角度描述。
DI:依賴注入:由容器動態地將某個依賴關係注入到組價之中。(控制的什麼被反轉了,獲得依賴對象的方式反轉了。)
參考:https://blog.csdn.net/qq_22654611/article/details/52606960