您的位置:首页 > 编程语言 > Java开发

java学习中springAOP—可以提升开发效率的神器,你知道什么吗?

2017-12-25 09:29 666 查看
互联网科技变更 2017-12-17 20:47:26

来一起看一下吧



AOP 是什么!

AOP 是 Aspect-oriented programming 面向切面(方面)的编程的简写,能够把业务逻辑和体系级的效劳进行隔离,使业务逻辑跟各个体系级效劳的耦合度下降,提高程序的重用性和开发效率

业务逻辑就是某个类的某个办法本身要完成的功用。比如我们之前写的 studentservice 里边完成的增删改查就是业务逻辑!



体系级的效劳像体系的日志,业务,权限验证

体系日志会记载什么人在哪一天什么时间做了哪些操作

权限验证就是验证我们的权限,还记得我们之前的聊天室的踢人功用吗?只要 admin才能够踢人

业务这个概念,今日暂时先放一下,在之后做比如的时候会演示给我们的!

那么现在把这些体系级效劳的刺进进我们的功用代码中,用一行输出语句代表我们的业务逻辑,在执行一个操作之前,要先进行权限验证,验证通过之后,再来执行我们的操作,操作完成后,记载日志。



小伙伴们自己想一下为什么是这个顺序?

这是在没有 AOP 之前,我们每个功用都要这么去增加体系级效劳,要是这个项目有一千个类,你就去加吧,至少一周不用干别的了,就是复制代码!

现在我们有了 AOP 就能够不用这么费事了

AOP 的底层原理

AOP 的底层完成的原理:动态署理

首先是实例化我们要署理的目标类 target, 然后在生成一个动态署理 proxy ,这个办法里边有三个参数,我们的目标类,目标类的接口,完成 invocation 接口。完成接口的一起需要完成里边的办法!这个办法里,有我们的署理目标,办法和参数



我已经把验证和日志都注释掉了



只要我们的测验结果中有我们标示的这两行,证明我们成功的刺进了体系级效劳!



测验结果:



看着很费事是不是,当然我们在实际的开发中不会去手动的生成署理,这儿只是给我们演示 AOP 的底层原理,要是这么费事我们还不如直接在代码里边刺进效劳了。

留意动态署理有两种办法:jdk动态署理 /cglib动态署理

jdk 的动态署理机制只能署理完成了接口的类

cglib 的动态署理既能够署理完成了接口的类,也能够署理没有完成接口的类

AOP一些专业术语

切面(Aspect): 就是穿插在各个业务逻辑中的体系效劳,类似于安全验证,业务处理,日志记载都能够理解为切面。

织入(weaving) :就是将切面代码刺进到目标目标某个办法的过程,相当于我们在jdk动态署理里边的 invocationHandler接口办法的内容 。

连接点(JointPoint) :理论上可能被切面织入的所有办法 ,比如 addStudent...一般所有办法都能够被称为连接点。

切入点(PointCut) :就是实际上被切面织入的办法。

目标目标(target) :就是切入点和连接点所属的类 StudentService。

通知(Advice): 就是切面的完成,切面织入的目标目标,时间点(办法执行前 ,后,前后,反常)以及内容。

顾问(Advisor) :其实就是通知的一个封装和延伸,能够将通知以更为复杂的办法织入到某些办法中。

好的各位小伙伴

今日就先到这儿了

我会继续努力的

再见了各位
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐