AOP(Aspect Oriented Programming)面向切面编程,AOP的作用不过多介绍,本文是主要是介绍AOP的成员,是我在复习的时候记录的一些笔记,方便以后查阅方便一些。

  JointPoint(连接点),在系统运行的之前,AOP的功能模块都需要织入到OOP的功能模块上,JointPoint就代表了在哪些执行点上进行织入操作的点。JointPoint可以是类的初始化、方法的调用、方法的执行、方法的调用、字段设置、字段获取、异常处理执行等。下面举例说明:

  

public class JointPointTest
{
private String name; public JointPointTest()
{
//doSomething
} public void toDo()
{
//doSomething
} public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
}
}
public class Main
{
public static void main(String[] args)
{
//JointPointTest类见上面代码
     JointPointTest jointPointTest = new JointPointTest();//构造方法执行
jointPointTest.setName("aaa");//字段设置(通过set方法与直接赋值的触发时间是相同的)
jointPointTest.getName();//字段获取
jointPointTest.toDo();//方法调用。方法执行即进入toDo方法的内部,对于同一对象方法的调用要早与方法的执行。
     //异常处理执行,即当某些类型异常抛出的时候,对应的异常处理逻辑执行点。
     //类的初始化, 类的静态类型或者静态块的初始化时点。   
}
}

  Pointcut(切入点),简单的理解就是JointPoint的集合。Pointcut代表的是JointPoint的表述方式,当横切逻辑织入到当前系统的时候,需要参照Pointcut规定的JointPoint信息。

    Pointcut的表述方式有很多:

    1.直接指定JointPoint所在方法名称。(一般不用,因为配置较多的情况比较不好表述。)

    2.正则表达式。

    3.使用特定的Pointcut表述语言。例如AspectJ,Spring默认使用的就是AspectJ的Pointcut表述语言。

    Pointcut运算(Pointcut与Pointcut之前还可以进行逻辑运算,这样我们就可以得到我们需要的较为复杂的Pointcut),不同的AOP实现产品不同,所以运算的表达方式不尽相同。

  Advice(通知),Advice很好理解就是JointPoint的执行时机。

    可以分为:

      1. 前置通知(before advice):在JointPoint指定位置之前执行。

      2. 后置通知(after advice):在JointPoint指定位置之后执行。分为以下三种:

        1) after return advice :只有当前JointPoint处流程正常结束后才执行after return advice。(即没有异常出现)

        2) after throwing advice :只有当前JointPoint处流程抛出异常时候才执行after throwing advice。

        3) after advie :或许叫after finally advice比较准确,它是不管当前JointPoint是否正常结束都会执行,就像JAVA当中的finally块中的代码一样。

      3. 环绕通知(around advice):可以再JointPoint之前和之后都指定相应的处理流程。

      4. introduction:与其他的通知不同,introduction不是根据JointPoint的执行时机来区分的,而是根据它可以完成的功能而区别其他的advice。

  Aspect(切面),是对系统的advice与pointcut进行模块化封装的AOP概念实体。可以包含多个pointcut与advice的相关定义。AspectJ可以使用@AspectJ注解并且结合普通的POJO来声明Aspect。

  上面介绍的就是AOP的基本成员,虽然是自己便于以后查阅,但是同时希望对大家有所帮助。

  

  

AOP的成员介绍的更多相关文章

  1. MongoDB 复制集 (一) 成员介绍

       一 MongoDB 复制集简介          MongoDB的复制机制主要分为两种:          Master-Slave    (主从复制)      这个已经不建议使用       ...

  2. Object.prototype的成员介绍

    3.Object.prototype的成员介绍        Object.prototype是js中所有的对象的祖宗        Object.prototype中所有的成员都可以被js中所有的对 ...

  3. Spring入门篇——第6章 Spring AOP的API介绍

    第6章 Spring AOP的API介绍 主要介绍Spring AOP中常用的API. 6-1 Spring AOP API的Pointcut.advice概念及应用 映射方法是sa开头的所有方法 如 ...

  4. 2021年春软件工程"助教团队"成员介绍

    2021年春软件工程 助教团队 成员介绍 项目 内容 这个作业属于那个课程 2021春季学期软件工程(罗杰.任健) 这个作业的要求在哪里 团队介绍 姓名 照片 个人介绍 分工 刘Q 本团队的PM,和助 ...

  5. spring aop做什么介绍

    1.AOP(Aspect Orient Programming),称为面向切面编程,它作为面向对象(OOP)的一种补充,用于处理系统中分布于各个模板的横切关注点,比如事务管理.日志.缓存等.AOP实现 ...

  6. spring AOP(切面) 表达式介绍

    在 spring AOP(切面) 例子基础上对表达式进行介绍 1.添加接口删除方法 2.接口实现类 UserDaoServer 添加实现接口删除方法 3.测试类调用delUser方法 4. 输出结果截 ...

  7. Spring家族主流成员介绍

    摘 要:Spring 就像一个大家族,有众多衍生产品例如 Boot,Security,JPA等等.但他们的基础都是Spring 的 IOC 和 AOP,IOC提供了依赖注入的容器,而AOP解决了面向切 ...

  8. [刘阳Java]_Spring AOP注解详细介绍_第8讲

    这节内容非常关键,我们会比较详细地介绍Spring AOP注解的使用 1. 要使用Spring AOP注解,必须满足如下的事项 导入Aspectj的jar.Spring3.0-AOP.jar.aopa ...

  9. Spring基础只是—AOP的概念介绍

    Spring容器包含两个重要的特性:面向切面编程(AOP)和控制反转(IOC).面向切面编程是面向对象(OOP)的一种补充,在面向对象编程的过程中编程针对的目标是一个个对象,而面向切面编程中编程针对的 ...

随机推荐

  1. Java数据结构与算法(5) - ch05链表(LinkList)

    双端链表与传统链表非常相似,但是它有一个新增的特性:即对最后一个链节点的引用,就像对第一个连接点的引用一样.注意与双向链表进行区别.

  2. set RowCount 与 top n

    有时,采用top n中间n它是一个变量,这将需要使用()去完成: declare @count1 int set @count1 = 8 select top <strong>(@coun ...

  3. UVA - 817 According to Bartjens

    Description  According to Bartjens  The wide dissemination of calculators and computers has itsdisad ...

  4. Windbg Extension NetExt

    Windbg Extension NetExt 摘要 : 在使用WINDBG做debugging的时候,需要一个好的工具帮助进行数据分析. 最常见的extension包括SOS, PSSCOR.  N ...

  5. Android SDK 2.2 离线安装

    android的普通安装方法非常easy,不必多说. 因为普通安装方法速度非常慢,对一般的用户要数小时的时间等待. 为更高速安装,能够採取离线安装方法.即,先分别下载所需包,再安装. 一,首先下载SD ...

  6. AutoMapper 创建嵌套对象映射(原创)

    之前在做DTO转换时,用到AutoMapper.但DTO的层次太深了,无奈官方没针对嵌套类型提供好的解决方案,于是自己实现了一下: 思路:采用递归和反射很好的避免手工创建嵌套对象的映射. 第一个版本, ...

  7. jquery的使用 关于 option ,append,attr,val()等的使用

    //遍历option和添加.移除option function changeShipMethod(shipping){ var len = $("select[@name=ISHIPTYPE ...

  8. 安装WindowsXP操作系统(Ghost版) - 初学者系列 - 学习者系列文章

    Windows XP的Ghost版是经典的版本.因为XP相对较小些,所以用Ghost起来速度比较快.如果Ghost那个Windows 7之类的,速度就慢了.Windows 7建议还是安装比较快.下面简 ...

  9. CSS3的应用,你学会了吗?

    开场白 CSS3相对于CSS2引入了很多的新的css属性和特效,利用css3实现了原来需要加入js才能模拟的效果,因此前端性能提高了很多. 各大浏览器厂商包括IE都逐渐的加大对CSS3 HTML5的支 ...

  10. 【SSRS】入门篇(二) -- 建立数据源

    原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...