国产精品与欧美交牲久久久久_国产精品毛片在线完整版_成人欧美在线视频_一个人看的www日本高清视频_日韩AV东北熟女_一区二区三区黄色毛片免费高清视频_亚洲欧美另类人妻_四虎精品免费视频_久久国产精品99精品国产_免费看黄片在线看

spring框架中AOP菜鳥

不要怕,小編在這里給大家輕松講解一下Spring框架中的AOP。( ~感覺這個題目就像在斗雞一樣~ )

首先,我們來說說AOP是什么,AOP其實就是面向切面編程啦~是OOP(面向?qū)ο缶幊蹋┑囊环N補充,用來解決OOP中的耦合度過高的問題。比如在我們的項目中,在各個模塊中都有日志的打印功能,在OOP中就會在每個模塊中單獨寫一個日志的方法,如果在項目中有數(shù)百個模塊,這樣代碼將是十分臃腫的,而且這么寫還會將不同的業(yè)務(wù)邏輯混為一談。使用AOP之后,我們將日志的打印這個功能抽象成一個切面,然后通過AOP的技術(shù)將這個切面橫切于各個模塊,這樣在各個模塊中就不需要再次書寫日志的代碼啦。

接下來我們介紹一下Spring框架中的AOP。Spring框架提供了一組很好用的AOP的實現(xiàn),通過Spring框架提供的AOP,我們可以把應(yīng)用業(yè)務(wù)里重復(fù)的、與業(yè)務(wù)本身無關(guān)的操作,如日志記錄、安全控制、異常處理等,抽象成一個獨立的“切面”組件,從而變成了與業(yè)務(wù)邏輯分離的模塊。

每個切面都被稱為一個增強,增強是需要完成的具體功能,我們可以把一個切面看做是代碼模塊化的基礎(chǔ)。在Spring AOP中,有四種通知類型,分別是前置通知(Before)、返回通知(AfterReturning)、異常通知(AfterThrowing)和最終通知(After)。

- 前置通知:在目標(biāo)方法執(zhí)行前執(zhí)行的通知。

- 返回通知:在目標(biāo)方法正常執(zhí)行完畢后執(zhí)行的通知。

- 異常通知:在目標(biāo)方法拋出異常時執(zhí)行的通知。

- 最終通知:在目標(biāo)方法執(zhí)行完畢后執(zhí)行的通知,無論目標(biāo)方法是否拋出異常都將執(zhí)行。

除了以上四種通知類型以外,還有環(huán)繞通知(Around)這個大爺!環(huán)繞通知是最常用的通知類型,是可以在目標(biāo)方法執(zhí)行前后都執(zhí)行的通知。在這個通知中,可以自由決定是否執(zhí)行目標(biāo)方法。

現(xiàn)在我們來看一個簡單的代碼例子:

```java

@Aspect //使用@Aspect注解標(biāo)注切面

@Component //使用@Component注解將切面交給Spring管理

public class LogAspect {

//在切點方法解析器中配置切點

@Pointcut("execution(* com.example.service.*.*(..))")

private void pointcut() {

}

@Before("pointcut()") // 使用@Before注解定義前置通知,并指定切點

public void before(JoinPoint joinPoint) {

String className = joinPoint.getTarget().getClass().getName();

String methodName = joinPoint.getSignature().getName();

System.out.println(className + "的" + methodName + "方法開始執(zhí)行啦!");

}

@AfterReturning(value = "pointcut()", returning = "result") //使用@AfterReturning注解定義返回通知,并指定切點及返回值

public void afterReturning(JoinPoint joinPoint, Object result) {

String className = joinPoint.getTarget().getClass().getName();

String methodName = joinPoint.getSignature().getName();

System.out.println(className + "的" + methodName + "方法執(zhí)行完畢啦,返回結(jié)果是:" + result);

}

@AfterThrowing(value = "pointcut()", throwing = "ex") //使用@AfterThrowing注解定義異常通知,并指定切點及異常類型

public void afterThrowing(JoinPoint joinPoint, Exception ex) {

String className = joinPoint.getTarget().getClass().getName();

String methodName = joinPoint.getSignature().getName();

System.out.println(className + "的" + methodName + "方法拋出異常啦:" + ex.getMessage());

}

@After("pointcut()") //使用@After注解定義最終通知,并指定切點

public void after(JoinPoint joinPoint) {

String className = joinPoint.getTarget().getClass().getName();

String methodName = joinPoint.getSignature().getName();

System.out.println(className + "的" + methodName + "方法執(zhí)行完畢啦!");

}

@Around("pointcut()) //使用@Around注解定義環(huán)繞通知,并指定切點

public Object around(ProceedingJoinPoint proceedingJoinPoint) {

Object result = null;

String className = proceedingJoinPoint.getTarget().getClass().getName();

String methodName = proceedingJoinPoint.getSignature().getName();

try {

System.out.println(className + "的" + methodName + "方法開始執(zhí)行啦!");

result = proceedingJoinPoint.proceed();

System.out.println(className + "的" + methodName + "方法執(zhí)行完畢啦,返回結(jié)果是:" + result);

} catch (Throwable throwable) {

System.out.println(className + "的" + methodName + "方法拋出異常啦:" + throwable.getMessage());

throwable.printStackTrace();

}

return result;

}

}

```

上面這個例子其實就是一個日志的切面,首先使用@Aspect注解將切面標(biāo)識成一個切面,然后使用@Pointcut注解配置切點,這個切點將切到com.example.service包下的所有方法。然后我們又定義了前置通知、返回通知、異常通知、最終通知和環(huán)繞通知這五種通知類型,并且都指定了切點。前四種通知在對應(yīng)的方法中分別輸出了開始執(zhí)行、執(zhí)行完畢、拋出異常和方法執(zhí)行完畢這些日志信息,而環(huán)繞通知可以選擇在調(diào)用目標(biāo)方法前后輸出日志,并且可以定義需要返回的結(jié)果。

好啦小伙伴們!現(xiàn)在你們學(xué)會了Spring框架中AOP的一些基礎(chǔ)知識啦,在實際開發(fā)中,大家可以根據(jù)不同的需求來配置不同的切面,實現(xiàn)代碼的模塊化和復(fù)用,提高項目的開發(fā)效率。最后,別忘了呀,練習(xí)是最好的實踐! yinyiprinting.cn 寧波海美seo網(wǎng)絡(luò)優(yōu)化公司 是網(wǎng)頁設(shè)計制作,網(wǎng)站優(yōu)化,企業(yè)關(guān)鍵詞排名,網(wǎng)絡(luò)營銷知識和開發(fā)愛好者的一站式目的地,提供豐富的信息、資源和工具來幫助用戶創(chuàng)建令人驚嘆的實用網(wǎng)站。 該平臺致力于提供實用、相關(guān)和最新的內(nèi)容,這使其成為初學(xué)者和經(jīng)驗豐富的專業(yè)人士的寶貴資源。

點贊(17) 打賞

聲明本文內(nèi)容來自網(wǎng)絡(luò),若涉及侵權(quán),請聯(lián)系我們刪除! 投稿需知:請以word形式發(fā)送至郵箱[email protected]

評論列表 共有 3 條評論

婁底seo 1年前 回復(fù)TA

心態(tài)好,什么都好!

淘寶客教程遮天吧 1年前 回復(fù)TA

站長的文章一般都從讀者的心里來考慮知道讀者需要什么樣的東西順便說一句,這是不是站長新書的一部分?期待啊

凡客 1年前 回復(fù)TA

《北大西洋與歐若拉大陸華人隱私事件交換網(wǎng)》

立即
投稿
發(fā)表
評論
返回
頂部