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

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

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

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

AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預編譯方式和運行期動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術。AOP是Spring框架中的一個重要內容,它通過對既有程序定義一個切入點,然后在其前后切入不同的執(zhí)行內容,比如常見的有:打開數(shù)據(jù)庫連接/關閉數(shù)據(jù)庫連接、打開事務/關閉事務、記錄日志等?;贏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依賴后,默認已經(jīng)增加了@EnableAspectJAutoProxy。

實現(xiàn)AOP的切面主要有以下幾個要素:

  • 使用@Aspect注解將一個java類定義為切面類
  • 使用@Pointcut定義一個切入點,可以是一個規(guī)則表達式,比如某個package下的所有函數(shù),也可以是一個注解等。
  • 根據(jù)需要在切入點不同位置的切入內容,即不同的通知:@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();
  }
}

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

相關文章

  • 解決HttpServletRequest 流數(shù)據(jù)不可重復讀的操作

    解決HttpServletRequest 流數(shù)據(jù)不可重復讀的操作

    這篇文章主要介紹了解決HttpServletRequest 流數(shù)據(jù)不可重復讀的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 使用JPA自定義VO接收返回結果集(unwrap)

    使用JPA自定義VO接收返回結果集(unwrap)

    這篇文章主要介紹了使用JPA自定義VO接收返回結果集(unwrap),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Mybatis有查詢結果但存不進實體類的解決方案

    Mybatis有查詢結果但存不進實體類的解決方案

    這篇文章主要介紹了Mybatis有查詢結果但存不進實體類的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java中的==和equals()區(qū)別小結

    Java中的==和equals()區(qū)別小結

    在Java編程中,理解==操作符和equals()方法的區(qū)別是至關重要的,本文主要介紹了Java中的==和equals()區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Hibernate連接三種數(shù)據(jù)庫的配置文件

    Hibernate連接三種數(shù)據(jù)庫的配置文件

    今天小編就為大家分享一篇關于Hibernate連接三種數(shù)據(jù)庫的配置文件,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Java進階學習之如何開啟遠程調式

    Java進階學習之如何開啟遠程調式

    Java開發(fā)中的遠程調試是一項至關重要的技能,特別是在處理生產(chǎn)環(huán)境的問題或者協(xié)作開發(fā)時,這篇文章主要介紹了Java進階學習之如何開啟遠程調式的相關資料,需要的朋友可以參考下
    2025-03-03
  • Java如何優(yōu)雅地關閉資源try-with-resource及其異常抑制

    Java如何優(yōu)雅地關閉資源try-with-resource及其異常抑制

    這篇文章主要介紹了Java如何優(yōu)雅地關閉資源try-with-resource及其異常抑制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • SpringBoot?Starter自定義全局加解密組件的詳細流程

    SpringBoot?Starter自定義全局加解密組件的詳細流程

    SpringBoot?Starter作用將一組相關的依賴打包,簡化項目的配置和初始化過程,通過特定的Starter開發(fā)者可以快速的實現(xiàn)特定功能模塊的開發(fā)和擴展,本文給大家介紹了SpringBoot?Starter自定義全局加解密組件的詳細流程,需要的朋友可以參考下
    2024-02-02
  • java @Data布爾值boolean的坑及解決

    java @Data布爾值boolean的坑及解決

    本文介紹了在使用Spring框架時,遇到的一個屬性命名規(guī)則問題,在Spring框架中,如果類的屬性名稱第一個字母小寫,第二個字母大寫,那么在調用set方法時,Spring會將屬性的后面的字母轉換為小寫,這種情況下,如果下游消費端調用得到的返回json串
    2024-10-10
  • redis實現(xiàn)隊列的阻塞、延時、發(fā)布和訂閱

    redis實現(xiàn)隊列的阻塞、延時、發(fā)布和訂閱

    本文主要介紹了redis實現(xiàn)隊列的阻塞、延時、發(fā)布和訂閱,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06

最新評論

井研县| 临泽县| 宜阳县| 嘉定区| 临猗县| 晋中市| 海门市| 江阴市| 玉屏| 晋中市| 夹江县| 云霄县| 兰溪市| 改则县| 桃源县| 陈巴尔虎旗| 思茅市| 瑞昌市| 北票市| 绿春县| 华蓥市| 尤溪县| 宜宾县| 壤塘县| 若尔盖县| 北宁市| 东城区| 英超| 墨竹工卡县| 海城市| 九江县| 潼南县| 内江市| 六枝特区| 青铜峡市| 宜都市| 务川| 奉贤区| 望江县| 福海县| 资阳市|