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

Spring 使用xml配置AOP的過程詳解

 更新時間:2023年11月24日 10:40:06   作者:比奇堡的天沒有云  
在之前的學習中,都是使用注解的方式進行AOP的配置.其實使用xml配置文件也可以配置AOP,本文給大家分享Spring 使用xml配置AOP的過程,感興趣的朋友一起看看吧

1.前言

在之前的學習中,都是使用注解的方式進行AOP的配置.其實使用xml配置文件也可以配置AOP.

2.xml配置AOP

xml配置AOP方法如下:

添加相關(guān)依賴

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.29</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.7</version>
    </dependency>
</dependencies>    

相關(guān)bean放到Spring容器中

@Service
public class StudentService {
    public void insert(){
        System.out.println("StudentService中的insert方法");
    }
}

創(chuàng)建切面類注入到Spring中,我這里使用的是@Component注解,也可以在配置文件中使用Bean標簽

@Component
public class Aspect {
    @Pointcut("execution(* com.example.service..*.*(..)")
    public void pt(){
        System.out.println("");
    }
    public void methodBefore(JoinPoint joinPoint){
        Object[] args = joinPoint.getArgs();
        Object target = joinPoint.getTarget();
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        System.out.println("Before");
    }
}

在配置文件中開啟組件掃描(因為我在將相應(yīng)的Bean注入到Spring中時,使用的是注解,如果使用Bean標簽,這一步可以省略)

<context:component-scan base-package="com.example">
</context:component-scan>

在配置文件中配置AOP,將切面類(StudentService)中的methodBefore方法設(shè)置為前置通知

    <aop:config>
        <!--定義切面-->
        <aop:pointcut id="pt" expression="execution(* com.example.service..*.*(..))"/>
        <!--配置切面-->
        <aop:aspect ref="aspect">
            <!--配置通知類型-->
            <!-- <aop:before method="methodBefore" pointcut-ref="pt"/> -->
            <aop:before method="methodBefore" pointcut="com.example.aspect.Aspect.pt()"/>
        </aop:aspect>
    </aop:config>

配置通知類型中有兩種寫法,一種是用pointcut-ref屬性,值是定義切面時的id,另一種是使用pointcut屬性,需要指定切點方法的全類名

運行結(jié)果:

在這里插入圖片描述

可以看到成功將StudentService中的methodBefore方法設(shè)置為前置通知了

接下來講一下復(fù)雜的通知如何配置,如下:

@AfterReturning(value = "point()",returning = "ret")
public void methodAfterReturning(JoinPoint joinPoint, Object ret){
	// 方法體
}
@AfterThrowing(value = "point()",throwing = "e")
public void methodAfterThrowing(JoinPoint joinPoint,Throwable e){
	// 方法體
}

@AfterReturning和@AfterThrowing是有兩個參數(shù)的

以@AfterReturning為例,在切面類中添加對應(yīng)的普通方法:

@Component
public class Aspect {
    @Pointcut("execution(* com.example.service..*.*(..))")
    public void pt(){
        System.out.println("");
    }
    public void methodBefore(JoinPoint joinPoint){
        Object[] args = joinPoint.getArgs();
        Object target = joinPoint.getTarget();
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        System.out.println("Before");
    }    
    public void methodAfterReturning(JoinPoint joinPoint, Object ret){
        System.out.println("AfterReturning: "+ ret);
    }
}
<aop:aspect ref="aspect">
    <!--配置通知類型-->
    <!-- <aop:before method="methodBefore" pointcut-ref="pt"/> -->
    <aop:before method="methodBefore" pointcut="com.example.aspect.Aspect.pt()"/>
    <aop:after-returning method="methodAfterReturning" pointcut-ref="pt" returning="ret"/>
</aop:aspect>

需要注意在設(shè)置AOP時,標簽中有returning這樣一個屬性

運行結(jié)果:

在這里插入圖片描述

3. 總結(jié)

xml配置AOP的重要步驟:

  • 定義切面類,定義切點.
  • 將目標類和切面類添加到Spring容器中(注解或Bean標簽),如果是注解方式,需要添加組件掃描
  • 在配置文件中配置AOP

在實際開發(fā)中,用注解配置AOP比較多,xml配置AOP了解即可

到此這篇關(guān)于Spring 使用xml配置AOP的文章就介紹到這了,更多相關(guān)spring配置aop內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis實現(xiàn)SQL存儲流程詳解

    Mybatis實現(xiàn)SQL存儲流程詳解

    MyBatis作為一款優(yōu)秀的持久層框架,它支持自定義SQL、存儲過程以及高級映射。它免除了幾乎所有的JDBC代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作
    2023-03-03
  • Java設(shè)計模式之里氏替換原則精解

    Java設(shè)計模式之里氏替換原則精解

    設(shè)計模式(Design pattern)代表了最佳的實踐,通常被有經(jīng)驗的面向?qū)ο蟮能浖_發(fā)人員所采用。設(shè)計模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。本篇介紹設(shè)計模式七大原則之一的里氏替換原則
    2022-02-02
  • 詳解Spring Boot + Mybatis 實現(xiàn)動態(tài)數(shù)據(jù)源

    詳解Spring Boot + Mybatis 實現(xiàn)動態(tài)數(shù)據(jù)源

    這篇文章主要介紹了Spring Boot + Mybatis 實現(xiàn)動態(tài)數(shù)據(jù)源,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • SpringBoot連接Hive實現(xiàn)自助取數(shù)的示例

    SpringBoot連接Hive實現(xiàn)自助取數(shù)的示例

    這篇文章主要介紹了SpringBoot連接Hive實現(xiàn)自助取數(shù)的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-12-12
  • Java基礎(chǔ)第四篇 封裝與接口

    Java基礎(chǔ)第四篇 封裝與接口

    本文將對介紹Java 的封裝與接口進行介紹,將要封裝(encapsulation)對象的成員(成員包括數(shù)據(jù)成員和方法),從而只允許從外部調(diào)用部分的成員。利用封裝,我們可以提高對象的易用性和安全性。想具體了解的小伙伴請參考下面文章的內(nèi)容
    2021-09-09
  • Java的Function接口與andThen組合及解讀

    Java的Function接口與andThen組合及解讀

    文章介紹了Java 8中的Function接口及其andThen方法,詳細解釋了Function接口的基礎(chǔ)概念、用法、組合機制及應(yīng)用,包括與compose方法的對比、在Stream API中的使用場景、高級應(yīng)用場景和最佳實踐,并強調(diào)了保持代碼簡潔、可讀性和靈活性的重要性
    2026-04-04
  • 深入淺出探索Java分布式鎖原理

    深入淺出探索Java分布式鎖原理

    單體系統(tǒng)中,在高并發(fā)場景下想要訪問共享資源的時候,我們需要通過加鎖的方式來保證共享資源并發(fā)的安全性,確保在同一時刻只有一個線程對共享資源進行操作
    2022-02-02
  • 淺談Java利用表格模型創(chuàng)建表格

    淺談Java利用表格模型創(chuàng)建表格

    這篇文章主要介紹了Java利用表格模型創(chuàng)建表格,需要的朋友可以參考下
    2017-09-09
  • java配置變量的解釋,搬運他人優(yōu)質(zhì)評論(推薦)

    java配置變量的解釋,搬運他人優(yōu)質(zhì)評論(推薦)

    這篇文章主要介紹了java配置變量,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • java實現(xiàn)發(fā)送郵箱驗證碼

    java實現(xiàn)發(fā)送郵箱驗證碼

    這篇文章主要為大家詳細介紹了java實現(xiàn)發(fā)送郵箱驗證碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

雅江县| 逊克县| 昌黎县| 奎屯市| 阜宁县| 乌恰县| 巴塘县| 洪江市| 广州市| 澎湖县| 大冶市| 陆良县| 丹凤县| 通州区| 绵阳市| 庐江县| 县级市| 金川县| 枞阳县| 延寿县| 平阳县| 宣城市| 元朗区| 昌宁县| 库伦旗| 柏乡县| 隆德县| 太白县| 江北区| 大厂| 保康县| 石柱| 磐安县| 敖汉旗| 庆云县| 大城县| 搜索| 安龙县| 宣武区| 泰州市| 邵阳县|