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