【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. spring之bean的自动扫描

    首先看一段applicationContext.xml中的自动扫描配置 <context:component-scan base-package="org.java.test" ...

  2. CSS3 transform 属性 旋转 div 元素

    div { transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg); /* ...

  3. vue 无缝滚动文字

    前言 用vue做无缝滚动,字体弹幕 就上代码吧 <head> <meta charset="UTF-8"> <style> div, ul, l ...

  4. HDU-3415-Max Sum of Max-K-sub-sequence(单调队列,带限制的最大子段和)

    链接: https://vjudge.net/problem/HDU-3415 题意: Given a circle sequence A[1],A[2],A[3]......A[n]. Circle ...

  5. c++linux多线程基础知识

    http://blog.csdn.net/lovecodeless/article/details/24929273 http://blog.csdn.net/Jiangweihll/article/ ...

  6. eclipse在线安装ermaster插件

    eclipse在线安装ermaster插件: https://www.jianshu.com/p/449fbcd9141a ERMaster的安装和使用 https://www.cnblogs.com ...

  7. BZOJ 4245: [ONTAK2015]OR-XOR 贪心 + 位运算

    Description 给定一个长度为n的序列a[1],a[2],...,a[n],请将它划分为m段连续的区间,设第i段的费用c[i]为该段内所有数字的异或和,则总费用为c[1] or c[2] or ...

  8. luogu P1083 借教室 x

    P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...

  9. Tensorflow在win10下的安装(CPU版本)

    环境:win10,64位 1.卸载python3.7,安装python3.6 由于之前已经安装了python,到tensorflow网站查看tensorflow的支持环境,https://tensor ...

  10. oracle调整链接数

    50用户以下:8GB 混用,oracle 占据1GB~3GB内存,open_cursors:300,processes:10050-100用户:16GB 混用,oracle 占据3~4GB内存,ope ...