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) :其实就是通知的一个封装和延伸,能够将通知以更为复杂的办法织入到某些办法中。
好的各位小伙伴
今日就先到这儿了
我会继续努力的
再见了各位
来一起看一下吧
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) :其实就是通知的一个封装和延伸,能够将通知以更为复杂的办法织入到某些办法中。
好的各位小伙伴
今日就先到这儿了
我会继续努力的
再见了各位
相关文章推荐
- 这两个类是java中进行key-value存储、查询的常用类,如果我们学习过哈希算法就会知道key-value查询的效率依赖于如何存储,换句话说,如果存的好,拿出来就容易,存的不好,拿出来就不方便。两
- java上此类开发包非常多,想问问各位C++同仁知道什么比较好的开发包for C/C++的吗
- Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725
- Spring Aop开发过程中可能出现的异常(通过这些异常可以知道需要什么Jar包)
- 推荐的几个开发常用在线工具,可以提升开发效率(持续更新)
- java开发线程篇1:java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.2 相关Java基础知识 类装载器 反射机制
- 转-推荐的几个开发常用在线工具,可以提升开发效率(持续更新)
- JavaWeb开发基于Spring和mybatis框架(学习日志)
- atitit.提升开发效率---使用服务器控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比较
- JAVA开发网站可以使用什么框架?
- java编程思想可以怎么样 最好是基础讲得最详细的 学习java什么书最好
- OC学习 #pragma mark指令的使用 这个没有什么可说的直接用就可以了,知道这个是什么即可
- Java 理论与实践: 用动态代理进行修饰(可以借鉴到spring的学习)
- Java框架学习笔记——Spring开发环境搭建
- 【原】让代码轻盈地飞舞——IDEA13最实用的功能,全面提升开发效率(桌面java项目开发实战)持续更新中
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.2 相关Java基础知识 类装载器 反射机制
- JAVA开发人员学习C++之变量名和变量地址之间是什么关系
- 这两个类是java中进行key-value存储、查询的常用类,如果我们学习过哈希算法就会知道key-value查询的效率依赖于如何存储,换句话说,如果存的好,拿出来就容易,存的不好,拿出来就不方便。两
- 一款可以让你开发效率提高10倍的DIY神器