【AOP】操作相关术语

  • Joinpoint(连接点):类里面哪些方法可以被增强,这些方法称为连接点。
  • Pointcut(切入点):在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面add和update方法,实际增强的方法称为切入点。
  • Advice(通知/增强):增强的逻辑,称为增强,比如扩展日志功能,这个日志功能称为增强。

    前置通知:在方法之前执行

    后置通知:在方法之后执行

    异常通知:方法出现异常

    最终通知:在后置之后执行

    环绕通知:在方法之前和之后执行

  • Aspect(切面):把增强应用到具体方法上面,这个过程称为切面,把增强用到切入点过程。

【Spring】的【AOP】操作(基于aspectj的xml方式)

  • 在spring里面进行aop的操作,使用aspectj实现。本身不是spring的一部分,是单独的一个框架,只是和spring一起做spring的aop的操作。
  • Spring2.0以后增加对aspectj的支持。
  • 新版本的spring框架,建议使用aspectj的方法开发aop。
  • 使用aspectj实现aop的两种方式:

    基于aspectj的xml配置

    基于aspectj的注解方式

  AOP操作准备工作

  • 除了导入基本的jar包之外,还需要导入aop相关的jar包

  • 导入AOP的约束

    http://www.springframework.org/schema/aop

    http://www.springframework.org/schema/aop/spring-aop.xsd

  使用表达式配置切入点:

    1、切入点:实际要增强的办法

    2、表达式:execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)

    1.   Execution(* com.aop.MyBook.add(..))
    2.   Execution(* com.aop.MyBook.*(..))
    3.   Execution(* *.*.add(..))
    4.   匹配所有的save开头的方法execution(* save*(..))
  1. 代码演示:

    第一步创建Book和MyBook两个类

  2.  public class Book {
    public void book(){
    System.out.println("book------");
    }
    }
  3.  public class MyBook {
    public void before1(){
    System.out.println("前置增强----------");
    }
    }

    第二步:创建配置文件

  4.  <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean definitions here -->
    <!-- 配置对象 -->
    <bean id="book" class="com.aop.Book"></bean>
    <bean id="mybook" class="com.aop.MyBook"></bean>
    <!-- 配置AOP操作 -->
    <aop:config>
    <!-- 配置切入点 表示对那个方法进行增强 -->
    <aop:pointcut expression="execution(* com.aop.Book.*(..))" id="pointcut"/>
    <!-- 配置切面 把增强的方法用在哪个方法上面-->
    <aop:aspect ref="mybook">
    <!-- 配置增强类型 method:增强类里面使用哪个方法作为前置 -->
    <aop:before method="before1" pointcut-ref="pointcut"/>
    </aop:aspect>
    </aop:config>
    </beans>

    第三步:创建测试方法

    1.  @Test
      public void testService(){
      ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext3aop.xml");
      Book book = (Book)applicationContext.getBean("book");
      book.book();
      }

      测试结果

      1.  前置增强----------
      2.  book------

      2017-08-18  19:12:37

【AOP】操作相关术语---【Spring】的【AOP】操作(基于aspectj的xml方式)的更多相关文章

  1. Spring的AOP开发入门,Spring整合Junit单元测试(基于ASpectJ的XML方式)

    参考自 https://www.cnblogs.com/ltfxy/p/9882430.html 创建web项目,引入jar包 除了基本的6个Spring开发的jar包外,还要引入aop开发相关的四个 ...

  2. 基于AspectJ的XML方式进行AOP开发

    -------------------siwuxie095                                 基于 AspectJ 的 XML 方式进行 AOP 开发         1 ...

  3. Spring的AOP开发(基于AspectJ的XML方式)

    Spring的AOP的简介: AOP思想最早是由AOP联盟组织提出的.Spring是使用这种思想最好的框架 Spring的AOP有自己实现的方式(非常繁琐). Aspect是一个AOP的框架, Spr ...

  4. Spring事务管理之声明式事务管理-基于AspectJ的XML方式

    © 版权声明:本文为博主原创文章,转载请注明出处 案例 - 利用Spring的声明式事务(AspectJ)管理模拟转账过程 数据库准备 -- 创建表 CREATE TABLE `account`( ` ...

  5. Spring框架的事务管理之基于AspectJ的XML方式(重点掌握)

    1. 步骤一:恢复转账开发环境(转账开发环境见“https://www.cnblogs.com/wyhluckdog/p/10137283.html”) 2.步骤二:引入AOP的开发包3.步骤三:引入 ...

  6. 基于AspectJ的注解方式进行AOP开发

    -------------------siwuxie095                                     基于 AspectJ 的注解方式进行 AOP 开发         ...

  7. 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的差别,sql文件导入

     1相关术语 语句 含义 操作 DML语句 (Data Manipulation Language) 数据库操作语言 insert update delete select DDL语言 (Date ...

  8. Spring的AOP基于AspectJ的注解方式开发3

    上上偏博客介绍了@Aspect,@Before 上篇博客介绍了spring的AOP开发的注解通知类型:@Before,@AfterThrowing,@After,@AfterReturning,@Ar ...

  9. Spring的AOP基于AspectJ的注解方式开发2

    参考自黑马培训机构 上一篇博客提到了在配置文件中开启aop的注解开发,以及简单使用了@Before,@Aspect 这是为了告诉spring为前置通知和切面类 接下来介绍aop的注解的通知类型,和切入 ...

随机推荐

  1. python子进程模块subprocess详解

    subprocess--子进程管理器一.subprocess 模块简介subprocess最早是在2.4版本中引入的.subprocess模块用来生成子进程,并可以通过管道连接它们的输入/输出/错误, ...

  2. PAT Basic 1043 输出PATest (20 分)

    给定一个长度不超过 ​ ​​ 的.仅由英文字母构成的字符串.请将字符重新调整顺序,按 PATestPATest.... 这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一样多的,若某种字符 ...

  3. canvas在高倍屏下变模糊的处理办法

    因为canvas不是矢量图,而是像图片一样是位图模式的.如果不做Retina屏适配的话,例如二倍屏,浏览器就会以2个像素点的宽度来渲染一个像素,该canvas在Retina屏幕下相当于占据了2倍的空间 ...

  4. 对所有的webview添加userAgent

    在appdelegate中- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDicti ...

  5. Python中绘制箭头

    以两个点为例,其中起点为点(1,2),终点为点(3,4) import matplotlib.pyplot as plt def drawArrow(A,B): fig = plt.figure() ...

  6. IDEA部署Spring-boot到Docker容器

    一.准备工作 idea安装Docker插件 centos7系统安装docker 二.打开docker远程端口 1. 编辑docker.service文件 vim /usr/lib/systemd/sy ...

  7. java的一些总结

    抽象方法和普通方法的区别???? 1.抽象方法必须要通过继承才能被实现,然后才能被对象调用:普通方法在定义的同时就已经实现了. 2.抽象方法只需声明,而不需实现某些功能 3.抽象方法必须要被重写 20 ...

  8. 搭建 MySQL 5.7.19 主从复制,以及复制实现细节分析

    主从复制可以使MySQL数据库主服务器的主数据库,复制到一个或多个MySQL从服务器从数据库,默认情况下,复制异步; 根据配置,可以复制数据库中的所有数据库,选定的数据库或甚至选定的表. Mysql ...

  9. 【leetcode】Exchange Seats

    Mary is a teacher in a middle school and she has a table seat storing students' names and their corr ...

  10. 利用poi操作word文档

    关键字:POI JAVA 批注 总页数 总字符数 一:认识POI Apache POI是一个开源的利用Java读写Excel.WORD等微软OLE2组件文档的项目.最新的3.5版本有很多改进,加入了对 ...