博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向切面编程(AOP)简介
阅读量:6647 次
发布时间:2019-06-25

本文共 972 字,大约阅读时间需要 3 分钟。

    在软件中,有些行为对于大多数应用都是通用的。日志,安全和事务管理几乎是所有软件都需要的。他们是否可以主动的参与呢,如果让应用程序只关注与自己所针对的业务领域问题,而其他的问题有其他应用对象来处理。是否属于一种封装呢。最近学习了spring的一些基本原理,在软件开发中,分布于应用中多处的功能被称为横切关注点(cross-cutting concerns)。通常,这些横切关注点从概念上是与应用的业务逻辑相分离的。将这些横切关注点与业务逻辑相分离是面向切面编程所解决的。

关于AOP的一些定义:

通知(Advice)

切面的工作被称为通知,且有目标,有自己需要完成的工作。

spring有五种类型的通知:

1.before   在方法被调用之前

2.after    在方法被调用之后
3.after-returning    在方法成功执行之后
4.after-throwing    在方法抛出异常之后
5.around    通知包裹了被通知的方法,在被通知方法调用之前和调用之后执行自定义的行为

连接点(Joinpoint)

连接点是在应用执行过程中能够插入切面的一个点,切面代码可以利用这些点插入到应用的正常流程之中,并添加新

的行为。Advice在应用程序上执行的点或时机,Spring只支持方法的JoinPoint,这个点也可以使属性修改,如:

Aspecj可以支持

切点(Poincut)

     切点有助于缩小切面所通知连接点的范围。它定义了Advice应用到哪些JoinPoint上,对Spring来说是方法调用。

切面(Aspect)

     是通知和切点的结合,通知和切点共同定义了关于切面的全部内容——她是什么,在何时和何处完成其功能。

Apring 对 AOP的4种支持:

1.基于代理的经典AOP

2.@AspectJ注解驱动的切面

3.纯POJO切面

4.注入式AspectJ切面

     前3个都是spring基于代理的AOP变体,因此,spring对AOP的支持局限于方法拦截。如果AOP需求超过了简单方法拦截的范畴,那么就使用最后一个方法,利用Spring的依赖注入把Bean注入到AspectJ切面中。

 

总结:

      下面的博客将会用自己敲的小例子来讲讲对于AOP的理解,对于另一种AOP的实现AspectJ,是如何与SpringAOP相结合的,等着进一步的了解。

你可能感兴趣的文章
模板维护-模板测试
查看>>
django -- 对模式进行调式(pay with the api)
查看>>
SQL Server sp_configure 控制内存使用
查看>>
通读《构建之法》提出问题
查看>>
VB生成xml
查看>>
左值、左值引用、右值、右值引用
查看>>
中转注入
查看>>
ACM 算法目录
查看>>
android 读取SD卡文件
查看>>
Flatten Binary Tree to Linked List
查看>>
Spring(十二)使用Spring的xml文件配置方式实现AOP
查看>>
开源 java CMS - FreeCMS2.3会员个人资料
查看>>
smack 4.1.2+openfire 3.10.2i
查看>>
sqlserver 中EXEC和sp_executesql使用介绍
查看>>
Javascript- Javascript学习
查看>>
day 5.基本数据类型:字典(dict)
查看>>
python 机器学习之岭回归
查看>>
Centos7通过Docker安装Sentry(哨兵)
查看>>
加入收藏兼容ie和火狐
查看>>
Linux常用的网络命令
查看>>