【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. 【转】在Linux下写一个简单的驱动程序

    转自:https://www.cnblogs.com/amanlikethis/p/4914510.html 本文首先描述了一个可以实际测试运行的驱动实例,然后由此去讨论Linux下驱动模板的要素,以 ...

  2. 020-zabbix修改主机名为中文名

    我这边zabbix版本有2.4和3的都有. 要让zabbix主机名支持中文,,需要修改zabbix的php代码文件,如下图修改完中文主机名是不支持的: 实现步骤: 进到zabbix web目录,一般在 ...

  3. 网页图片失效自动替换图片地址js代码

    当你网页中的图片失效之后它会显示你预先设定好的默认图片,而不是显示为一个大大的红叉叉. js脚本如下: <script language="javascript"> v ...

  4. SQLServer Transaction Isolation Level

    基本用法 -- Syntax for SQL Server and Azure SQL Database SET TRANSACTION ISOLATION LEVEL { READ UNCOMMIT ...

  5. event loop 与 vue

    结论 对于event loop 可以抽象成一段简单的代码表示 for (macroTask of macroTaskQueue) { // 1. Handle current MACRO-TASK h ...

  6. 美国的电信巨头T-Mobile今天披露了另一起数据遭黑客泄露事件

    您是T-Mobile预付费客户吗?如果是,您应该立即创建或更新您关联的帐户PIN /密码,以提供额外的保护.总部位于美国的电信巨头T-Mobile今天披露了另一起数据泄露事件,该事件最近暴露了一些使用 ...

  7. 透彻的了解Linux系统故障并解决

    透彻的了解Linux系统故障并解决 2009-12-25 10:24 佚名 NET130 字号:T | T 经常应用Windows操作系统时,我们会很多的系统故障,于是很多人开始应用Linux操作系统 ...

  8. linux查杀minergate-cli/minerd病毒

    redis的漏洞让公司的服务器中了挖矿的病毒,入侵者在服务器上留了后门.每次只是把进程杀杀,但是过段时间病毒又回来了,这个事情一直让人头疼.先是minerd的病毒入侵,后是minergate-cli入 ...

  9. 【leetcode】1186. Maximum Subarray Sum with One Deletion

    题目如下: Given an array of integers, return the maximum sum for a non-empty subarray (contiguous elemen ...

  10. 使用linq将2个Datatable合并

    DataTable dtStepX = new DataTable("dtStepX"); DataTable dtStepS = new DataTable("dtSt ...