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. ASP.NET——RequiredFieldValidator控制和ValidationSummary控制

    我们的登录页面,忘记承担损失password然后username,该页面将永远是一个小提醒. 那么我们在网也制作的时候怎样实现这一功能呢?这就用到了RequiredFieldValidator控件和V ...

  2. Hash散列算法 Time33算法

    hash在开发由频繁使用.今天time33也许最流行的哈希算法. 算法: 对字符串的每一个字符,迭代的乘以33 原型: hash(i) = hash(i-1)*33 + str[i] ; 在使用时.存 ...

  3. 速度 Github

    首先需要了解.git 是版本号的管理工具,为了能够把任意代码托管执照:github 其中一个是. 应用 github 什么不该说的帐户. 那么,申请后,在需求 github 并建立了独特的本地机器上的 ...

  4. Boost Lockfree

    Boost Lockfree flyfish 2014-9-30 为了最大限度的挖掘并行编程的性能考虑使用与锁无关的数据结构来编程 与锁无关的数据结构不是依赖于锁和相互排斥来确保线程安全. Lockf ...

  5. UVA The Sultan's Successors

    题目例如以下: The Sultan's Successors  The Sultan of Nubia has no children, so she has decided that thecou ...

  6. SOD框架的数据容器,打造最适合DDD的ORM框架

    SOD框架的数据容器,打造最适合DDD的ORM框架 引言:DDD的困惑 最近,我看到园子里面有位朋友的一篇博客 <领域驱动设计系列(一):为何要领域驱动设计? >文章中有下面一段话,对DD ...

  7. SQL 无限级分类语句

    原文:SQL 无限级分类语句 原表数据为: 此处用到了with关键字,在程序中也可以用递归实现,但觉得还是没有一条sql方便 with tb (ID,Name,ParentID,Sort) as( s ...

  8. leetcode -day31 Subsets I II

    1.  Subsets Given a set of distinct integers, S, return all possible subsets. Note: Elements in a ...

  9. 为Pythonic论坛添加一个“专题”功能(续)

    上篇博文<为Pythonic论坛添加一个“专题”功能>,在模板的层次上对发帖进行了限制.也就是根据用户是否拥有权限来决定是否显示发帖框. 但是自从这么“投机取巧”的写完模板后,整夜辗转反侧 ...

  10. Windows 8.1 store app 开发笔记

    原文:Windows 8.1 store app 开发笔记 零.简介 一切都要从博彦之星比赛说起.今年比赛的主题是使用Bing API(主要提到的有Bing Map API.Bing Translat ...