1.AOP简介

1.AOP (面向切面编程):是一种新的方法论,是对传统OOP(面向对象编程)的补充
2.AOP 的主要编程对象是切面(aspect),而切面模块化横切关注点
3.在应用AOP编程时,任然需要定义公共功能,但可以明确的定义这个功能在哪儿,以什么方式应用,并且不必修改受影响的类,这样以来横切关注点就被模块化到特殊的对象(切面)里。
4.AOP好处:1.每个事务逻辑位于一个位置,代码不分散,便于维护升级2.业务模块更简洁,只包含核心业务代码
例如加减乘除的逻辑1.代理对象:业务逻辑加:验证参数,前置日志,add(),后置日志减:验证参数,前置日志,sub(),后置日志乘:验证参数,前置日志,mul(),后置日志除:验证参数,前置日志,div(),后置日志抽取横切关注点↓     AOP↑        2.验证:验证参数    切面  3.日志:前置日志,后置日志4.目标对象:业务逻辑(add(),sub(),mul(),div())

2.AOP术语

1.切面(Aspect):横切关注点(跨越应用程序多个模块的的功能)被模块化的特殊对象
2.通知(Advice):切面必须要完成的工作
3.目标(Target):被通知的对象
4.代理(Proxy):向目标对象应用通知之后创建的对象
5.连接点(Joinpoint):程序执行的某个特定位置:如类某个方法调用前,调用后,方法抛出异常后等。连接点由两个信息确定:方法表示的程序执行点;相对点表示的方位。例如ArithmeticCalculator#add()方法执行前的连接点,执行点为ArithmeticCalculator#add();方位为该方法执行前的位置
6.切点(pointcut):每个类拥有多个连接点;例如ArithmeticCalculator的所有方法实际上都是连接点,即连接点是程序类中客观存在的事务。AOP通过切点定位到特定的连接点。类比:连接点相当于数据库中的记录,切点相当于查询条件。切点和连接点不是一对一关系,一个切点匹配多个连接点,切点通过org.springframework.aop.Pointcut接口进行描述,它使用类和方法作为连接点查询条件

3.Spring AOP

1.AspectJ:java社区里最完整最流行的AOP框架
2.在Spring2.0以上版本中,可以使用基于Aspectj注解或基于XML配置的AOP
在Spring中启用Aspect注解支持1.要在Spring应用中使用Aspectj注解,必须在classpath下包含Aspectj类库:aopalliance.jar,aspectj.weaver.jar和spring-aspects.jar2.将aop Scheme添加到<beans>根元素中3.要在SpringIOC容器中启用Aspectj注解支持,只要在Bean配置文件中定义一个空的XML元素<aop:aspectj-autoproxy>4.当SpringIOC容器侦测到Bean配置文件中的<aop:aspectj-autoproxy>元素时,会自动为Aspectj切面匹配的Bean创建代理
3.1用AspectJ 注解申明切面
1.要在Spring中shengmingAspect切面,只要在IOC容器中将切面声明为Bean实例。当在SpringIOC容器中初始化Aspectj切面之后,SpringIOC容器就会为那些与Aspectj切面相匹配的Bean创建代理
2.在Aspectj注解中,切面只是一个带有@Aspect注解的java类
3.通知是标注有某种注解的简单的java方法
4.Aspectj支持5种类型的通知注解1.@Before:前置通知,在方法执行之前执行2.@After:后置通知,在方法执行之后执行3.@AfterReturning:返回通知,在方法结果之后执行4.@AfterThrowing:异常通知,在方法抛出异常之后6.@Around:环绕通知,围绕着方法执行
流程
1.加入jar包com.springsource.net.sf.cglib-2.2.0.jarcom.springsource.org.aopalliance-1.0.0.jarcom.springsource.org.aspectj.weaver-1.6.8.RELEASE.jarspring-aspects-4.3.10.RELEASE.jar
2.在Spring的配置文件中加入aop的命名空间(aop,context)
3.基于注解的方式来使用AOP1.在配置文件中配置自动扫描的包 <context:component-scan base-package="com.hp.test"></context:component-scan>2.加入使Aspectj注解起作用的配置<aop:aspectj-autoproxy></aop:aspectj-autoproxy>为匹配的类自动生成代理对象
4.编写一个切面类1.一个一般的Java类2.在其中添加要额外实现的功能(日志,验证……)
5.配置切面1.必须是IOC中的bean:实际添加了@Component注解2.声明一个切面:添加@Aspect3.声明通知:即额外加入功能对应的方法1.前置通知:@Before("execution(public int com.hp.test.ArithmeticCalculator.*(int,int))")@Before表示在目标方法之前执行@Before标记的方法的执行体@Before里面是切入点表达式
6.在通知中访问连接细节:可以再通知方法中添加JoinPoint类型的参数,从中可以访问到方法签名和方法的参数
7.@After表示后置通知:在方法执行之后执行的代码(即使方法抛出异常,后置通知也会执行)

Aop简介 Aop术语 SpringAOP相关推荐

  1. aop简介-aop相关概念

    AOP 相关概念 Spring 的 AOP 实现底层就是对上面的动态代理的代码进行了封装,封装后我们只需要对需要关注的部分进行代码编写,并通过配置的方式完成指定目标的方法增强. 在正式讲解 AOP 的 ...

  2. aop简介-aop开发明确的事

    AOP 开发明确的事项 1)需要编写的内容 编写核心业务代码(目标类的目标方法) 编写切面类,切面类中有通知(增强功能方法) 在配置文件中,配置织入关系,即将哪些通知与哪些连接点进行结合 2)AOP ...

  3. aop简介-aop的底层实现

    实际上,AOP 的底层是通过 Spring 提供的的动态代理技术实现的.在运行期间,Spring通过动态代理技术动态的生成代理对象,代理对象方法执行时进行增强功能的介入,在去调用目标对象的方法,从而完 ...

  4. AOP 简介及入门步骤

    一.AOP简介 AOP(Aspect Oriented Programming)面向切面编程,是一种编程范式,指导开发者如何组织程序结构 作用:在不惊动原始设计的基础上为其进行功能增强 Spring理 ...

  5. 【AOP 面向切面编程】AOP 简介 ( AspectJ 简介 | AspectJ 下载 )

    文章目录 一.AOP 简介 二.AspectJ 简介 三.AspectJ 下载 一.AOP 简介 AOP 是 Aspect Oriented Programming 的缩写 , 面向切面编程 ; 利用 ...

  6. Spring AOP 简介以及简单用法

    Spring AOP 简介以及简单用法 如果你去面试java开发, 那么Spring的AOP和DI几乎是必问的问题. 那么AOP是什么呢? 一. AOP 所谓Aop就是 Aspect-Oriented ...

  7. Spring学习(三)Spring AOP 简介

    本文借鉴:Spring学习(特此感谢!) 一.简介 定义 aop就是面向切面编程,在数据库事务中切面编程被广泛使用. 在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能. 核心业务:比如登陆 ...

  8. 普歌-云言团队-Spring的AOP简介

    什么是AOP AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP 是 OOP 的 ...

  9. Spring AOP(一) AOP基本概念

    Spring AOP 基本概念 术语 容易理解 举个栗子给大家讲一下代理: 什么是AOP? 基本术语 (1)切面(Aspect) (2) 目标对象(Target) (3) 连接点(JoinPoint) ...

最新文章

  1. 用composer安装laravel-bjyblog
  2. 前端中会用到的设计模式之单一职责原则
  3. Scapy 伪造网络数据包
  4. OpenCV特征检测Feature Detection
  5. 函数参数和函数返回值
  6. 筛法求10000以内的质数
  7. NS2仿真分析无线网络的攻击防御(1)
  8. 吴恩达CS229速查表
  9. sendmail邮件服务器的基本建立过程
  10. 消息传递的图神经网络
  11. flask的请求与响应
  12. Java语言的基础知识6
  13. 在苹果Mac上如何查找和删除文件?
  14. HTML Agility Pack:简单好用的快速 HTML Parser
  15. 通过一个备份归档的脚本演示rsync限速和find如何删除文件
  16. WAVE-U-NET: A MULTI-SCALE NEURAL NETWORK FOR END-TO-END AUDIO SOURCE SEPARATION
  17. 指标赋权与评价类方法总结
  18. WPF学习第十二集-绘图和动画
  19. U3D资源导出至Laya
  20. 用three.js渲染上海外滩模型

热门文章

  1. CSS设置阴影样式大全 包含所有样式 有图有代码
  2. linux如何彻底删除一个用户
  3. 气传导蓝牙耳机优缺点有哪些?气传导耳机科普及推荐
  4. win7、win10关闭驱动签名,进入驱动测试模式,以及常见初级问题的解决
  5. Android apk 腾讯云-乐固的加固及签名
  6. 微信小程序:全新强大的恋爱话术微信小程序源码土味情话视频号or自媒体操作项目
  7. Codeforces 1293 E. Xenon‘s Attack on the Gangs —— 树上记忆化搜索,单点加改成区间加,有丶东西
  8. 『杭电1900』Gangs
  9. 微信小程序踩坑之wxml中有内容,但是页面上不显示
  10. TFTP协议解析及C/C++代码实现