【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. Nginx Location规则

    Nginx由内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端的请求映射到一个location block,而location是Nginx配置中的一个指令 ...

  2. PAT Basic 1042 字符统计 (20 分)

    请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过 1000 的字符串.字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母, ...

  3. 用python实现简单的计算器(加减乘除小括号等)

    需求:实现能计算类似 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) ...

  4. python中使用schedule模块定时执行任务

    python中有一个轻量级的定时任务调度的库:schedule.他可以完成每分钟,每小时,每天,周几,特定日期的定时任务.因此十分方便我们执行一些轻量级的定时任务. 代码如下: import sche ...

  5. RMQ 2d 模板

    #include<iostream> #include<cstdio> #include<string.h> #include<string> #inc ...

  6. Vue props双向绑定

    props是不能改变的 项目里遇到一个问题,就是props的组件内是不能改变,就像react中的props值也是不能改变的, 所以我在用的时候竟然忽略了这个点.真的要反省反省, 下面就是这个报错的问题 ...

  7. jmeter--单个接口通,自动化不通时

    单个接口通,自动化不通时,对比两者请求 post 请求的格式,内容编码

  8. Cassandra 安装部署

    Linux 系统安装Cassandra 一.Cassandra需要安装jdk支持,首先安装jdk 自行百度查找安装 二.下载Cassandra 官网地址: https://cassandra.apac ...

  9. idea万能快捷键,你不知道的17个实用技巧!!!

    IDEA里有一个万能快捷键(alt enter),功能非常强大,同一个快捷键,可以根据不同的语境提示你不同的操作,很多人可能还不了解这些功能,在处理代码的时候还手动处理,了解这些技巧之后,你编码也是一 ...

  10. ubuntu 微信安装

    安装过程: 下载最新版本tar.gz压缩包https://github.com/geeeeeeeeek/electronic-wechat/releases/download/V2.0/linux-x ...