AOP的成员介绍
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的成员介绍的更多相关文章
- MongoDB 复制集 (一) 成员介绍
一 MongoDB 复制集简介 MongoDB的复制机制主要分为两种: Master-Slave (主从复制) 这个已经不建议使用 ...
- Object.prototype的成员介绍
3.Object.prototype的成员介绍 Object.prototype是js中所有的对象的祖宗 Object.prototype中所有的成员都可以被js中所有的对 ...
- Spring入门篇——第6章 Spring AOP的API介绍
第6章 Spring AOP的API介绍 主要介绍Spring AOP中常用的API. 6-1 Spring AOP API的Pointcut.advice概念及应用 映射方法是sa开头的所有方法 如 ...
- 2021年春软件工程"助教团队"成员介绍
2021年春软件工程 助教团队 成员介绍 项目 内容 这个作业属于那个课程 2021春季学期软件工程(罗杰.任健) 这个作业的要求在哪里 团队介绍 姓名 照片 个人介绍 分工 刘Q 本团队的PM,和助 ...
- spring aop做什么介绍
1.AOP(Aspect Orient Programming),称为面向切面编程,它作为面向对象(OOP)的一种补充,用于处理系统中分布于各个模板的横切关注点,比如事务管理.日志.缓存等.AOP实现 ...
- spring AOP(切面) 表达式介绍
在 spring AOP(切面) 例子基础上对表达式进行介绍 1.添加接口删除方法 2.接口实现类 UserDaoServer 添加实现接口删除方法 3.测试类调用delUser方法 4. 输出结果截 ...
- Spring家族主流成员介绍
摘 要:Spring 就像一个大家族,有众多衍生产品例如 Boot,Security,JPA等等.但他们的基础都是Spring 的 IOC 和 AOP,IOC提供了依赖注入的容器,而AOP解决了面向切 ...
- [刘阳Java]_Spring AOP注解详细介绍_第8讲
这节内容非常关键,我们会比较详细地介绍Spring AOP注解的使用 1. 要使用Spring AOP注解,必须满足如下的事项 导入Aspectj的jar.Spring3.0-AOP.jar.aopa ...
- Spring基础只是—AOP的概念介绍
Spring容器包含两个重要的特性:面向切面编程(AOP)和控制反转(IOC).面向切面编程是面向对象(OOP)的一种补充,在面向对象编程的过程中编程针对的目标是一个个对象,而面向切面编程中编程针对的 ...
随机推荐
- Tomcat剖析(三):连接器(2)
Tomcat剖析(三):连接器(2) 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三):连接器(1) 4 ...
- MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器
实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器 MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过A ...
- SEO 优化,网站推广优化教程100条(SEO,网站关键字优化,怎么优化网站,如何优化网站关键字)
这篇文章不错. http://www.cnblogs.com/zangdalei/archive/2010/08/31/1814047.html 看了一半之后的,觉得不太靠谱,很多都不懂. 于是 找 ...
- Hadoop与HBase中遇到的问题(续)java.io.IOException: Non-increasing Bloom keys异常
在使用Bulkload向HBase导入数据中, 自己编写Map与使用KeyValueSortReducer生成HFile时, 出现了以下的异常: java.io.IOException: Non-in ...
- git合并远端分支到本地分支的两种方式
作者:zhanhailiang 日期:2014-11-21 在使用版本号工具提交改动之前,都须要通过update先将本地代码更新到最新版本号.SVN通过svn update就能够实现,那么git怎样实 ...
- datatables表格
datatables表格 并不是所有的后台开发都有美工和前端工程师来配合做页面,为了显示数据并有一定的美感,jQuery的DataTables插件对于像我这样的前端菜鸟来说真是雪中送炭,当然对于专业的 ...
- ASP.NET 5是如何通过XRE实现跨平台的
挡不住的好奇心:ASP.NET 5是如何通过XRE实现跨平台的 .NET程序员也有自己的幸福,.NET的跨平台是一种幸福,.NET的开源也是一种幸福,而更幸福的是可以通过开源的.NET了解.NET ...
- jQuery选取和操纵元素的特点
jQuery选取和操纵元素的特点 JavaScript选取元素 先来看看不用jQuery的时候我们是怎么处理元素选取的. JavaScript选取元素的时候,可以根据id获取元素,当id不存在的时候, ...
- windows下使用pthread
有的时候需要使用多线程来测试代码啥的,在Linux下有pthread,在windows也有. 我这儿是使用MingW作为编译工具,具体如何下载MingW自行在网上搜索. 而pthread是在这里下载的 ...
- mcstructs-MircoCStructs用C语言实现的微型数据结构库
以C语言的方式,我将逐步实现以下算法: 我的Github地址为:https://github.com/tfa2012/mcstructs 1 线性链表 2 环形缓冲区 3 Hash表