上节我们提到了使用基于注解实现的AOP,这节我们将用基于xml配置的方式来实现的AOP。

1.首先建立一个类,作为切面类,这个类主要用来实现注解中各种通知要实现的方法。

 1 package com.yangyang.aop;
 2
 3 import org.aspectj.lang.ProceedingJoinPoint;
 4 /**
 5  * 切面类
 6  * @author Administer
 7  *
 8  */
 9 public class MyInterceptorForXml {
10     //前置通知
11     public void doAccessCheck(){
12         System.out.println("前置通知");
13     }
14
15     //后置通知
16     public void doAfterReturning(){
17         System.out.println("后置通知:");
18     }
19
20     //例外通知
21     public void doAfterThrowing(){
22         System.out.println("例外通知");
23     }
24
25     //最终通知
26     public void doAfter(){
27         System.out.println("最终通知");
28     }
29
30     //环绕通知(特别适合做权限系统)
31     public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable{
32         System.out.println("环绕通知进入方法");
33         Object object=pjp.proceed();
34         System.out.println("环绕通知退出方法");
35         return object;
36     }
37 }

2.在spring的配置文件中配置aop的相关操作:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4         xmlns:context="http://www.springframework.org/schema/context"
 5         xmlns:aop="http://www.springframework.org/schema/aop"
 6         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 7             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
 8             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
 9  <!-- 加上aop的命名空间以及DTD验证 -->
10
11      <bean id="myInterceptorForXml" class="com.yangyang.aop.MyInterceptorForXml"></bean>
12      <aop:config>
13          <aop:aspect id="aspect" ref="myInterceptorForXml"><!-- 定义一个切面 -->
14              <!-- 配置切入点 -->
15              <aop:pointcut  id="mycut" expression="execution (* com.yangyang.service..*.*(..))"/>
16              <aop:before pointcut-ref="mycut" method="doAccessCheck"/>
17              <aop:after-returning pointcut-ref="mycut" method="doAfterReturning"/>
18              <aop:after-throwing pointcut-ref="mycut" method="doAfterThrowing"/>
19              <aop:after pointcut-ref="mycut" method="doAfter"/>
20              <aop:around pointcut-ref="mycut" method="doBasicProfiling"/>
21          </aop:aspect>
22      </aop:config>
23
24     <bean id="personService" class="com.yangyang.service.impl.PersonServiceImpl">
25     </bean>
26
27 </beans>

特别要提到的是此处

<aop:pointcut  id="mycut" expression="execution (* com.yangyang.service..*.*(..))"/> 中的execution 的表达式中* 与com.yangyang....之间要有一个空格。

3.同理进行单元测试,得到与之前相同的结果,这样基于XML配置耳朵AOP也就实现了

转载于:https://www.cnblogs.com/shunyang/p/3302122.html

一步一步深入spring(6)--使用基于XML配置的spring实现的AOP相关推荐

  1. Spring MVC之基于xml配置的web应用构建

    2019独角兽企业重金招聘Python工程师标准>>> 更多spring博文参考: http://spring.hhui.top/ 直接用SpringBoot构建web应用可以说非常 ...

  2. 基于XML配置的Spring MVC(所需jar包,web.xml配置,处理器配置,视图解析器配置)

    1.添加jar 2.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app ver ...

  3. spring整合mybatis基于xml配置

    数据库 /* Navicat MySQL Data Transfer Source Server         : mysql Source Server Version : 50549 Sourc ...

  4. webconfig.java_基于JavaConfig配置的Spring MVC的构建

    上一篇讲了基于XML配置的构建,这一篇讲一讲基于JavaConfig的构建.为什么要写这篇文章,因为基于xml配置的构建,本人认为很麻烦,要写一堆的配置,不够简洁,而基于JavacConfig配置的构 ...

  5. spring实战六之使用基于java配置的Spring

    之前接触的都是基于XML配置的Spring,Spring3.0开始可以几乎不使用XML而使用纯粹的java代码来配置Spring应用.使用基于java配置的Spring的步骤如下: 1. 创建基于ja ...

  6. 基于JavaConfig配置的Spring MVC的构建

    上一篇讲了基于XML配置的构建,这一篇讲一讲基于JavaConfig的构建.为什么要写这篇文章,因为基于xml配置的构建,本人认为很麻烦,要写一堆的配置,不够简洁,而基于JavacConfig配置的构 ...

  7. Spring实战——无需一行xml配置实现自动化注入

    已经想不起来上一次买技术相关的书是什么时候了,一直以来都习惯性的下载一份电子档看看.显然,如果不是基于强烈的需求或强大的动力鞭策下,大部分的书籍也都只是蜻蜓点水,浮光掠影. 就像有位同事说的一样,有些 ...

  8. Spring装配Bean---使用xml配置

    声明Bean Spring配置文件的根元素是<beans>. 在<beans>元素内,你可以放所有的Spring配置信息,包括<bean>元素的声明. 除了Bean ...

  9. Spring Cache抽象-基于XML的配置声明(基于EhCache的配置)

    概述 完整示例 pomxml增加依赖 数据库表数据Oracle 实体类 服务层 ehcache的配置文件 Spring-EhCache配置文件 单元测试 日志输出 日志分析 示例源码 概述 首先请阅读 ...

最新文章

  1. 如何利用遗传算法进行自变量降维
  2. 小波包分解 matlab_多尺度一维小波分解
  3. 多线程面试题_100多线程和Java并发面试问答–最终清单(PDF下载)
  4. Fortran执行语句中的“双冒号” ::
  5. 安卓应用性能调试和优化经验分享
  6. AI 框架部署方案之模型转换
  7. 选中的磁盘具有MBR分区表,在EFI系统上,windows只能安装到GPT磁盘
  8. 如何用od去手动脱壳
  9. centos7构建kylo-0.10.1
  10. idea 2021版本错误提示反应慢
  11. ppt 如何加背景音乐
  12. python股市回测程序
  13. win10远程桌面_怎么选择Win10系统版本?家庭版与专业版的对比介绍
  14. android 修改系统默认时间24小时制
  15. 小语种-lisp-凡利于语言设计者的,也利于语言使用者
  16. 如何优雅地跟老板请假?
  17. ABBYY FastML:一种用于大型文档流处理的客户端机器学习新方案。
  18. 中国建筑设计公司排名
  19. 闲鱼疯转 6800 份!大厂内部数据分析资料首次公开!
  20. \t\t手纹里面的秘密

热门文章

  1. Java:十六进制转换成十进制
  2. Nginx 学习 —— 负载均衡
  3. GO select用法详解
  4. 深入理解 Session 与 Cookie
  5. java中引用一个文件数据_JAVA-基础-引用数据类型(类)
  6. 服务器 | 种类及区别
  7. 计算机设置从光盘启动怎么办,设置BIOS从光盘启动教程
  8. arraylist是如何扩容的?_ArrayList的源码分析
  9. c# vscode 配置_使用VSCode开发C#项目
  10. ML:MLOps系列讲解之《MLOps原则—迭代增量过程/自动化/持续部署/版本控制/实验跟踪/测试/监控/“ML成绩”系统/可再现性/松散耦合架构(模块化)/基于ML的软件交付指标等》解读