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

SpringBoot整合aop面向切面編程過程解析

 更新時間:2020年02月24日 13:45:13   作者:codedot  
這篇文章主要介紹了SpringBoot整合aop面向切面編程過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了SpringBoot整合aop面向切面編程過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預編譯方式和運行期動態(tài)代理實現程序功能的統(tǒng)一維護的一種技術。AOP是Spring框架中的一個重要內容,它通過對既有程序定義一個切入點,然后在其前后切入不同的執(zhí)行內容,比如常見的有:打開數據庫連接/關閉數據庫連接、打開事務/關閉事務、記錄日志等?;贏OP不會破壞原來程序邏輯,因此它可以很好的對業(yè)務邏輯的各個部分進行隔離,從而使得業(yè)務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發(fā)的效率。

spring aop默認是使用JDK動態(tài)代理,即基于接口的代理,可以通過proxy-target-class屬性修改。如果proxy-target-class=true, 那基于類的代理將起作用(這時需要cglib庫)。

引入依賴

<!--aop-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!--spring 的aop默認是使用JDK代理,即-->
<!--用來動態(tài)代理用的,基于類的代理-->
<dependency>
  <groupId>cglib</groupId>
  <artifactId>cglib</artifactId>
  <version>3.2.12</version>
</dependency>

注:在完成了引入AOP依賴包后,一般來說并不需要去做其他配置。也許在Spring中使用過注解配置方式的人會問是否需要在程序主類中增加@EnableAspectJAutoProxy來啟用,實際并不需要。AOP的默認配置屬性中spring.aop.auto屬性默認是開啟的,也就是說只要引入了AOP依賴后,默認已經增加了@EnableAspectJAutoProxy。

實現AOP的切面主要有以下幾個要素:

  • 使用@Aspect注解將一個java類定義為切面類
  • 使用@Pointcut定義一個切入點,可以是一個規(guī)則表達式,比如某個package下的所有函數,也可以是一個注解等。
  • 根據需要在切入點不同位置的切入內容,即不同的通知:@Before、@After、@AfterReturning、@Around、@AfterThrowing

普通業(yè)務組件

/**
 * 普通業(yè)務組件
 */
@Component
public class CustomerBusiness {

  private String message;

  public void setMessage(String message) {
    this.message = message;
  }

  public void getMessage() {
    System.out.println("Your Message : " + message);
  }
}

切面

@Aspect //聲明式一個切面組件
@Component //加入到IoC容器
public class TimeHandler {
  
  //指定切入點表達式,攔截那些方法,即為哪些類生成代理對象
  @Pointcut("execution(* com.linhw.demo.ascpet.CustomerBusiness.*())")
  public void pointCut(){
    
  }
  
  @Before("pointCut()")
  public void printBeforeTime() {
    System.out.println("---------------Before CurrentTime = " + System.currentTimeMillis());
  }
  
  @After("pointCut()")
  public void prinAftertTime() {
    System.out.println("---------------After CurrentTime = " + System.currentTimeMillis());
  }
  
}

測試

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = {AopApplication.class})
public class AopTest {

  @Autowired
  CustomerBusiness business;

  @Test
  public void testAop(){
    business.setMessage("hello world");
    business.getMessage();
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java8深入學習之熟透Optional

    Java8深入學習之熟透Optional

    這篇文章主要給大家介紹了關于Java8深入學習之熟透Optional的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Java8具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • 詳解springboot測試類注解

    詳解springboot測試類注解

    這篇文章主要介紹了springboot測試類注解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 淺談java對象的比較

    淺談java對象的比較

    這篇文章主要給大家分享java對象的比較,主要有元素的比較、類的比較及比較的方法,想具體了解的小伙伴和小編一起進入下面文章內容吧
    2021-10-10
  • java入門概念個人理解之package與import淺析

    java入門概念個人理解之package與import淺析

    下面小編就為大家?guī)硪黄猨ava入門概念個人理解之package與import淺析。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • Java中String類常用方法使用詳解

    Java中String類常用方法使用詳解

    String類是一個很常用的類,它位于java.lang包下,是Java語言的核心類,用來保存代碼中的字符串常量的,并且封裝了很多操作字符串的方法。本文就來聊聊String類常用方法使用,感興趣的可以了解一下
    2022-08-08
  • springboot中用fastjson處理返回值為null的屬性值

    springboot中用fastjson處理返回值為null的屬性值

    在本篇文章里小編給大家整理的是一篇關于springboot中用fastjson處理返回值問題詳解內容,需要的朋友們參考下。
    2020-03-03
  • SpringBoot的服務注冊與發(fā)現示例

    SpringBoot的服務注冊與發(fā)現示例

    本篇文章主要介紹了SpringBoot的服務注冊與發(fā)現示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java模擬實現斗地主發(fā)牌

    Java模擬實現斗地主發(fā)牌

    這篇文章主要為大家詳細介紹了Java實現模擬斗地主發(fā)牌,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 關于Feign的覆寫默認配置和Feign的日志

    關于Feign的覆寫默認配置和Feign的日志

    這篇文章主要介紹了關于Feign的覆寫默認配置和Feign的日志方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • springboot 獲取工具類bean過程詳解

    springboot 獲取工具類bean過程詳解

    這篇文章主要介紹了springboot 獲取工具類bean過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論