springboot如何新建aop切面

springboot如何新建aop切面,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了察哈爾右翼中旗免費(fèi)建站歡迎大家使用!

springboot引入AOP

主要是分為以下幾步:

  1. 引入相關(guān)的依賴

  2. 新建一個(gè)切面

  3. 編寫相應(yīng)的切點(diǎn)和通知

引入相關(guān)的依賴

除了web的包之外,還需要引一個(gè)aop相關(guān)的starter相關(guān)的包

  
    
  
  
  compile group: 'org.springframework.boot', name: 'spring-boot-starter-aop', version: '2.2.0.RELEASE'

新建切面

通俗來講,一個(gè)切面有兩個(gè)部分組成
1是對(duì)哪些方法做修改,加強(qiáng),注入等等,都是一個(gè)意思
2是對(duì)這些方法做什么樣的修改,執(zhí)行前,執(zhí)行后,執(zhí)行前后等等

  
    
  
  
  
/** * 聲明一個(gè)切面,只用加一個(gè)@Aspect注解就可以了 * 還有個(gè)注解@Component是聲明這個(gè)類為Spring的bean */@Aspect@Componentpublic class TestAspect {
/**     * 切面的組成部分之一,告訴程序要對(duì)哪些方法進(jìn)行操作     * 在本DEMO中直接指定了一個(gè)方法,推薦后續(xù)用注解的方式去找方法     * 在現(xiàn)在注解盛行的時(shí)代,這樣根據(jù)方法名去找方法的用處已經(jīng)不多了     * 更多的是通過某個(gè)注解去找到對(duì)應(yīng)的方法,后續(xù)也會(huì)有DEMOb出來     */@Pointcut("execution(public * cloud.javastudy.demo.controller.TestController.testAspect(..))")public void testPointcut(){}
/**     * 對(duì)找到的方法進(jìn)行修改     * 有@Around,對(duì)方法執(zhí)行前后進(jìn)行修改     * 有@Before, 在方法執(zhí)行前進(jìn)行修改     * 有@After,  在方法執(zhí)行后進(jìn)行修改     * 有@AfterReturning, 在方法返回后進(jìn)行修改     * 有@AfterThrowing, 在方法拋出異常后修改     * 常用的是@Around,常用于對(duì)方法體加 Try-catch,對(duì)方法執(zhí)行計(jì)時(shí),對(duì)方法入?yún)?,返回做日志記錄等?/code>     */@Around("testPointcut()")public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {        System.out.println("before pointcut");        Object proceed = joinPoint.proceed();        System.out.println("after pointcut");return proceed;    }}
           

被測(cè)試的方法

  
    
  
  
  
package cloud.javastudy.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;
@RestControllerpublic class TestController {
/**     * 測(cè)試被切面的方法     * @return     */    @RequestMapping("test/testAspect")    public String testAspect(){System.out.println("in method");return "OK";    }}
           

結(jié)果輸出:
springboot如何新建aop切面

AOP是spring的兩大特性之一,相對(duì)比于以前spring用xml復(fù)雜的聲明,在springboot中使用aop只用引一個(gè)依賴,新建一個(gè)切面類就可以解決了, 簡單的demo很簡單,真正使用還是要好好琢磨下,如在使用Around時(shí),復(fù)雜的邏輯要記得新開一個(gè)子線程來處理,我就曾經(jīng)在記錄redis的key命中時(shí),因?yàn)槭菦]有異步記錄,導(dǎo)致redis出奇的慢,加油吧少年!

看完上述內(nèi)容,你們掌握springboot如何新建aop切面的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

本文標(biāo)題:springboot如何新建aop切面
轉(zhuǎn)載注明:http://muchs.cn/article14/joggge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、虛擬主機(jī)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)公司電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)