java 切面获取参数_每天分享一点Java知识(spring-aop)
每天分享一點Java知識,碼字不易,喜歡的可以關注一波,共同學習。20191127
本篇將詳細講解SpringAOP的概念以及如何實現。
1. 何為AOP
AOP:面向切面編程,相對于OOP面向對象編程。
Spring AOP存在的目的是為了解耦,AOP可以讓一組類共享相同的行為,在OOP中只能通過繼承類喝實現接口,來使代碼的耦合度增強,且類繼承只能為單繼承,阻礙更多行為添加到一組類上,AOP彌補了OOP的不足。
2. AspectJ的注解式切面編程
a. 使用注解@Aspect聲明是一個切面;
b. 使用注解@After、@Before、@Around等定義建言(advice),可直接將攔截規則(切點)作為參數;
c. 其中@After、@Before、@Around參數的攔截規則為切點(PointCut),為了使切點復用,可使用@PointCut專門定義攔截規則,然后在@After、@Before、@Around的參數中調用;
d. 其中符合條件的每一個被攔截處為連接點(JoinPoint)。
3. 下面將演示基于注解攔截和基于方法規則攔截兩種方式,演示一種模擬記錄操作的日志系統的實現。其中注解式攔截能夠很好的控制要攔截的粒度和獲得更豐富的信息,Spring本身在事務處理(@Transcational)和數據緩存(@Cacheable等)上面都使用此種形式的攔截。
4. 代碼示例:
a. 添加依賴
i. 添加Spring Aop支持以及AspectJ依賴
spring-aop依賴
AspectJ依賴
b. 編寫攔截規則的實現
攔截規則注解
解釋:注解本身是沒有功能的,就和xml一樣。注解和xml都是一種元數據,元數據即解釋數據的數據,這就是所謂配置。注解的功能來自用這個注解的地方。
c. 編寫使用注解的被攔截類
注解攔截類
d. 編寫使用方法規則被攔截類
e. 編寫切面
切面類
解釋:
i. 通過@Aspect注解聲明一個切面;
ii. 通過@Component讓此切面成為Spring容器管理的Bean;
iii. 通過@PointCut注解聲明切入點;
iv. 通過@After注解聲明一個建言,并使用@PointCut定義的切點;
v. 通過反射可以獲得注解上的屬性,然后做日志記錄相關的操作,下面的相同;
vi. 通過@Before注解聲明一個建言,此建言直接使用攔截規則作為參數。
f. 配置類
注解配置
解釋:使用@EnableAspectJAutoProxy注解開啟Spring對AspectJ代理的支持。
g. 運行
運行測試
h. 結果
運行結果
5. 至此,便完成了Spring Aop的實現,相信大家對aop的理解也會更深一步。
想獲取完整面試題及答案的同學請點贊、關注并轉發。私信樓主:“Java面試題”獲取完整資料,更有超全spring、jvm、linux、docker等電子書相送。更有整理的200多頁的面試重點知識點,非常全面,需要的私信。
總結
以上是生活随笔為你收集整理的java 切面获取参数_每天分享一点Java知识(spring-aop)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票分红当天买可以吗
- 下一篇: 万分之六是多少