欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot基于自定義注解實(shí)現(xiàn)切面編程

 更新時(shí)間:2020年11月23日 08:52:36   作者:_不正  
這篇文章主要介紹了SpringBoot基于自定義注解實(shí)現(xiàn)切面編程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1、相關(guān)依賴包

 <!-- aop 依賴包 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>

    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>1.8.6</version>
    </dependency>

2、定義切面類

package com.bz.aspect;

import com.bz.service.SysLogOperationService;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 操作日志,切面處理類
 */
@Aspect
@Component
public class LogOperationAspect {
  @Autowired(required = false)
  private SysLogOperationService sysLogOperationService;

  @Pointcut("@annotation(com.bz.aspect.BzLogOperation)")
  public void logPointCut() {
    System.out.println("lllll");
  }

  /**
   * 前置通知:方法執(zhí)行前調(diào)用
   */
  @Before("logPointCut()")
  public void begin() {
    System.out.println("前置通知:方法執(zhí)行前調(diào)用");
  }

  /**
   * 后置通知: 方法執(zhí)行后調(diào)用,若方法出現(xiàn)異常,不執(zhí)行
   */
  @AfterReturning("logPointCut()")
  public void afterReturning() {
    System.out.println("后置通知: 方法執(zhí)行后調(diào)用,若方法出現(xiàn)異常,不執(zhí)行");
  }

  /**
   * 最終通知:無論無何都會(huì)調(diào)用,類似于:try/catch中的finally
   */
  @After("logPointCut()")
  public void after() {
    System.out.println("最終通知:無論無何都會(huì)調(diào)用,類似于:try/catch中的finally");
  }

  /**
   * 異常通知:方法拋出異常時(shí)執(zhí)行
   */
  @AfterThrowing("logPointCut()")
  public void afterThrowing() {
    System.out.println("異常通知:方法拋出異常時(shí)執(zhí)行");
  }

  /**
   * 環(huán)繞通知
   * 既可以在目標(biāo)方法之前織入增強(qiáng)動(dòng)作,也可以在執(zhí)行目標(biāo)方法之后織入增強(qiáng)動(dòng)作;
   * 可以決定目標(biāo)方法在什么時(shí)候執(zhí)行,如何執(zhí)行,甚至可以完全阻止目標(biāo)目標(biāo)方法的執(zhí)行;
   * 可以改變執(zhí)行目標(biāo)方法的參數(shù)值,也可以改變執(zhí)行目標(biāo)方法之后的返回值; 當(dāng)需要改變目標(biāo)方法的返回值時(shí),只能使用Around方法;
   */
  @Around("logPointCut()")
  public void around(ProceedingJoinPoint point) throws Throwable {
    // 獲取切點(diǎn)方法的名稱
    String methodName = point.getSignature().getName();
    // 獲取方法傳入?yún)?shù)
    Object[] params = point.getArgs();
    //轉(zhuǎn)成字符串
    List<Object> objects = Arrays.asList(params);
    objects.forEach(obj -> System.out.println(JSON.toJSONString(obj)));
    System.out.println("環(huán)繞通知");
  }
}

3、自定義切面注解類

package com.bz.aspect;

import java.lang.annotation.*;

/**
 * @author: BuZheng
 * @date: 2020-05-18 下午 2:02
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface BzLogOperation {

  String value() default "";
}

4、接口測試

  @ApiOperation("切面測試")
  @GetMapping("/aop")
  @BzLogOperation("切面測試")
  public ResultBean userList(@RequestParam(value = "keyWord") String keyWord) {
    log.info("### 切面測試 ###");

    return new ResultBean();
  }

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot中通過8項(xiàng)配置優(yōu)化提升Tomcat性能的配置方法

    SpringBoot中通過8項(xiàng)配置優(yōu)化提升Tomcat性能的配置方法

    優(yōu)化Spring Boot,Spring Cloud 應(yīng)用程序中Tomcat的配置有助于提高性能和資源利用率,這篇文章主要介紹了SpringBoot中通過8項(xiàng)配置優(yōu)化提升Tomcat性能的配置方法,需要的朋友可以參考下
    2024-08-08
  • Java 類動(dòng)態(tài)添加屬性字段的操作

    Java 類動(dòng)態(tài)添加屬性字段的操作

    這篇文章主要介紹了Java 類動(dòng)態(tài)添加屬性字段的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 關(guān)于Elasticsearch封裝公共索引增刪改查

    關(guān)于Elasticsearch封裝公共索引增刪改查

    索引是Elasticsearch中存儲(chǔ)數(shù)據(jù)的邏輯單元,類似于關(guān)系數(shù)據(jù)庫中的表,它包含多個(gè)文檔,每個(gè)文檔都是一個(gè)結(jié)構(gòu)化的JSON數(shù)據(jù)格式,在實(shí)際應(yīng)用中,索引的使用與配置可以依據(jù)不同的方案進(jìn)行,例如在Spring Boot項(xiàng)目中,可以選擇自動(dòng)配置或者手動(dòng)編寫配置類
    2024-10-10
  • Spring Boot CLI使用教程

    Spring Boot CLI使用教程

    本篇文章主要介紹了Spring Boot CLI使用教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • SpringBoot關(guān)于List集合的校驗(yàn)方式

    SpringBoot關(guān)于List集合的校驗(yàn)方式

    這篇文章主要介紹了SpringBoot關(guān)于List集合的校驗(yàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java實(shí)現(xiàn)雙鏈表的示例代碼

    Java實(shí)現(xiàn)雙鏈表的示例代碼

    雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個(gè)數(shù)據(jù)結(jié)點(diǎn)中都有兩個(gè)指針,分別指向直接后繼和直接前驅(qū)。本文將用Java語言實(shí)現(xiàn)雙鏈表,需要的可以參考一下
    2022-09-09
  • MyBatis完成CRUD?詳細(xì)細(xì)節(jié)內(nèi)容剖析

    MyBatis完成CRUD?詳細(xì)細(xì)節(jié)內(nèi)容剖析

    這篇文章主要介紹了MyBatis完成CRUD?詳細(xì)細(xì)節(jié)內(nèi)容剖析,本文通過圖文示例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-05-05
  • java微信延遲支付的實(shí)現(xiàn)示例

    java微信延遲支付的實(shí)現(xiàn)示例

    最近在面試的過程中總會(huì)出現(xiàn)一些關(guān)于微信支付延遲返回結(jié)果的處理方式的問題,本文主要介紹了java微信延遲支付的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • java中對(duì)象的強(qiáng)、軟、弱、虛四種引用詳解

    java中對(duì)象的強(qiáng)、軟、弱、虛四種引用詳解

    這篇文章主要介紹了java中對(duì)象的強(qiáng)、軟、弱、虛四種引用詳解,對(duì)象的引用分為4種,分別是強(qiáng)引用>軟引用>弱引用>虛引用,程序員可以通過不同的引用控制對(duì)象的生命周期,方便垃圾回收,使程序更加靈活的控制對(duì)象生命周期,需要的朋友可以參考下
    2023-09-09
  • 詳談cxf和axis兩種框架下的webservice客戶端開發(fā)

    詳談cxf和axis兩種框架下的webservice客戶端開發(fā)

    這篇文章主要介紹了詳談cxf和axis兩種框架下的webservice客戶端開發(fā),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論