最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot自定義注解及AOP的開(kāi)發(fā)和使用詳解

 更新時(shí)間:2023年08月15日 08:58:12   作者:JK凱  
在公司項(xiàng)目中,如果需要做一些公共的功能,如日志等,最好的方式是使用自定義注解,自定義注解可以實(shí)現(xiàn)我們對(duì)想要添加日志的方法上添加,這篇文章基于日志功能來(lái)講講自定義注解應(yīng)該如何開(kāi)發(fā)和使用,需要的朋友可以參考下

一、引入 AOP 依賴(lài)

自定義注解一般會(huì)和 AOP(切面) 結(jié)合使用,所以我們首先需要在項(xiàng)目中引入相應(yīng)的依賴(lài)。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

二、創(chuàng)建自定義注解 Log 

annotation.Log:

import java.lang.annotation.*;  
@Target(ElementType.METHOD)  
@Retention(RetentionPolicy.RUNTIME)  
@Documented  
public @interface Log {  
    String value() default "";  
}
  • @Target: 表明該注解可以作用的目標(biāo)是誰(shuí),也就是你的注解是用來(lái)修飾方法?類(lèi)?還是屬性?這里是表明作用在方法上。
  • @Retention: 表明該注解作用的生命周期,這里表明在運(yùn)行時(shí)有效。
  • @Documented: 表明被它修飾的注解將被 javadoc 提取成文檔。

三、創(chuàng)建 AOP切面類(lèi)

aspect.LogAspect:

import org.aspectj.lang.ProceedingJoinPoint;  
import org.aspectj.lang.annotation.*;  
import org.springframework.stereotype.Component;  
@Aspect  
@Component  
public class LogAspect {  
    @Pointcut("@annotation(com.jk.annotation.Log)")  
    public void pointCut(){}  
    @Before("pointCut()")  
    public void before() {  
        System.out.println("前置通知...");  
    }  
    @After("pointCut()")  
    public void after() {  
        System.out.println("后置通知...");  
    }  
    @Around("pointCut()")  
    public void around(ProceedingJoinPoint point) throws Throwable {  
        System.out.println("環(huán)繞通知前...");  
        point.proceed();  
        System.out.println("環(huán)繞通知后...");  
    }  
}
  • @Aspect: 表明該類(lèi)為切面類(lèi),定義切面類(lèi)時(shí)必須加這個(gè)注解。
  • @Component: 表明把該類(lèi)交給 IOC 容器控制。
  • @Pointcut: 定義切入點(diǎn),結(jié)合 @annotation(@interface) 使用,表明該方法為切入點(diǎn)。 @interface 必須寫(xiě)自定義注解的全路徑名。
  • @Before: 表明被自定義注解代理的方法執(zhí)行前,先調(diào)用的方法。
  • @After: 表明被自定義注解代理的方法執(zhí)行后, return 前調(diào)用的方法。
  • @Around: 將被自定義注解代理的方法封裝起來(lái),環(huán)繞通知(即在他之前之后通知), point.proceed() 表明執(zhí)行的目標(biāo)方法。

四、自定義注解測(cè)試

controller.TestController:

import com.jk.annotation.Log;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RestController;  
@RestController  
@RequestMapping("/test")  
public class TestController {  
    @GetMapping  
    @Log  
    public void test() {  
        System.out.println("執(zhí)行test方法");
    }  
}

test() 方法上添加了一個(gè) @Log 注解,他會(huì)在執(zhí)行這個(gè)方法時(shí),執(zhí)行我們之前定義切面時(shí)創(chuàng)建的前置方法、后置方法、環(huán)繞方法。

image.png

在 SpringBoot 中使用自定義注解就是如此簡(jiǎn)單,一般在通知方法中我們還會(huì)結(jié)合反射來(lái)獲取執(zhí)行方法的一些信息,如方法名,參數(shù),響應(yīng)值等,在后面我也會(huì)新開(kāi)一篇文章專(zhuān)門(mén)講講反射,有興趣的掘友可以關(guān)注一下哦!

到此這篇關(guān)于SpringBoot自定義注解及AOP的開(kāi)發(fā)和使用詳解的文章就介紹到這了,更多相關(guān)SpringBoot注解及AOP開(kāi)發(fā)和使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中獲取當(dāng)前路徑的幾種方法總結(jié)

    Java中獲取當(dāng)前路徑的幾種方法總結(jié)

    這篇文章主要介紹了Java中獲取當(dāng)前路徑的幾種方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 使用lombok@Data啟動(dòng)項(xiàng)目報(bào)錯(cuò)問(wèn)題及解決

    使用lombok@Data啟動(dòng)項(xiàng)目報(bào)錯(cuò)問(wèn)題及解決

    在使用Lombok時(shí),可能會(huì)遇到實(shí)體類(lèi)中的@Data注解不生效,導(dǎo)致get方法找不到的問(wèn)題,解決這一問(wèn)題通常需要三個(gè)步驟:首先,檢查項(xiàng)目設(shè)置中編譯規(guī)則是否勾選;其次,確認(rèn)IDE中是否安裝了Lombok插件
    2024-10-10
  • logback 實(shí)現(xiàn)給變量指定默認(rèn)值

    logback 實(shí)現(xiàn)給變量指定默認(rèn)值

    這篇文章主要介紹了logback 實(shí)現(xiàn)給變量指定默認(rèn)值操作,具有很好的參考家價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot中的Thymeleaf模板

    SpringBoot中的Thymeleaf模板

    Thymeleaf 的出現(xiàn)是為了取代 JSP,雖然 JSP 存在了很長(zhǎng)時(shí)間,并在 Java Web 開(kāi)發(fā)中無(wú)處不在,但是它也存在一些缺陷。在這篇文中給大家介紹了這些缺陷所存在問(wèn)題,對(duì)spring boot thymeleaf 模板相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2018-10-10
  • SpringBoot如何防止XSS注入攻擊詳解

    SpringBoot如何防止XSS注入攻擊詳解

    這篇文章主要給大家介紹了關(guān)于SpringBoot如何防止XSS注入攻擊的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 最新評(píng)論

    兴安县| 南安市| 铁力市| 博罗县| 平顶山市| 炉霍县| 高碑店市| 合山市| 康乐县| 盐城市| 宁海县| 拉萨市| 偏关县| 五莲县| 延津县| 德化县| 南部县| 梅河口市| 迁安市| 高雄县| 永善县| 尖扎县| 锡林浩特市| 宜春市| 金寨县| 宁远县| 新津县| 奎屯市| 甘孜县| 桐梓县| 迭部县| 十堰市| 屯留县| 侯马市| 麻江县| 高唐县| 江口县| 广州市| 武功县| 红桥区| 鄂伦春自治旗|