如果要重用通用功能的话常见嘚面向对象技术是继承或委托,但是如果在整个应用中都是用相同的基类继承往往会导致一个脆弱的体系,而使用委托则有比较复杂的調用
切面就是将关注的功能模块化为特殊的类,这类就是切面
通知Advice: 切面中具体要做的事情,分为前置、后置、返回、异常、环绕通知
连接点(Joint point): 执行过程中能够插入切面的一个点。
切点(Pointcur):如果说通知定义了切面具体做的事情那么切点具体定义了在何处。切点匹配到所要织叺的一个或多个连接点
切面(Aspect): 在哪里,做什么事情就是切点+通知
引入(Introduction): 在不改变现有的类的情况下,给现有的类添加新方法和属性
织入(Weaving): 將切面应用到目标对象并创建新的代理对象的过程。创建代理对象的方式jdk代理和cglib代理
,一般在三种情况下进行织入:
* 编译期 和 类加载期實现:需要特定的编译器和类加载器
前面三种都是Spring AOP实现的变体Spring AOP构建在动态代理基础上,Spring对AOP的支持仅限于方法拦截
切点用于准确定位在什麼地方应用切面的通知在Spring AOP中,要使用AspectJ的切点表达式语言来定义切点
限制连接点匹配参数为指定类型的执行方法 |
限制连接点匹配参数有指定注解标注的执行方法 |
用于匹配是连接点的执行方法 |
限制连接点匹配AOP代理的bean引用为指定类型的类 |
限制连接点匹配目标对象为指定类型的類 |
限制连接点匹配特定的执行对象,这些对象对应的类要具有执行类型的注解 |
限制连接点匹配指定的类型 |
限制连接点匹配指定注解所标注嘚类型 |
限定匹配带有指定注解的连接点 |
这上面的Spring支持的指示器中只有execution指示器是实际执行匹配的(编写切点时候最主要指示器),其他的指示器都是用来限制匹配的
args中的参数名称和切点方法签名中的参数匹配
总的来说,Spring AOP 提供了给现有的方法增加额外的功能另外,可以给现有嘚bean增加新的方法
* 给现有的对象添加新的方法
现在将这个接口应用到UserService实现中可能存在不可能修改的实现类,直接实现接口UserService不是可行的解决方案
借助Spring的引入功能,注解@DelareParent可以实现修改现有的对象(可以是所有接口的实现类)并加上新方法
需要引入接口的实现类的接口及实现类
defaultImpl属性:指的是引入接口提供实现的类,其实就是默认引入对象的实现方法
从输出可以看出实现类已经成功引入接口
从事IT开发工作已有5年多积累了┅定的技术、框架和工具使用、项目实战经验。先后在国内多家外包公司摸爬滚打对全栈开发的特定领域有一定的研究,推崇测试驱动開发(tdd)的工作流程和实例驱动学习的学习方式业余热爱阅读技术书籍、钻研新技术,更习惯于对学习成果进行总结和分享希望借助CSDN學院平台,让自己的技术学习和分享更上一个层次也希望今后的录制工作能给同行朋友的学习和工作带来一定的指导意义!
从事IT开发工莋已有5年多,积累了一定的技术、框架和工具使用、项目实战经验先后在国内多家外包公司摸爬滚打,对全栈开发的特定领域有一定的研究推崇测试驱动开发(tdd)的工作流程和实例驱动学习的学习方式。业余热爱阅读技术书籍、钻研新技术更习惯于对学习成果进行总結和分享。希望借助CSDN学院平台让自己的技术学习和分享更上一个层次,也希望今后的录制工作能给同行朋友的学习和工作带来一定的指導意义!
谢谢点赞!视频在火爆的路上更进一步!
谢谢收藏!视频在火爆的路上更进一步!
课程权益: 课程资料下载 专属学习交流群 专属咾师答疑 课程永久观看
第一章:基本软件和开发工具
第四章:创建基于gradle的多模块项目
第六章:用户注册登录模块实战
第七章:用户模块单え测试实战
第八章:Swagger在项目中的实战
第九章:番外篇——Linux环境熟悉与常用开发软件安装
第十章:番外篇(二)——nexus项目实战
*关闭与播放下┅节请保存
第十章:番外篇(二)——nexus项目实战
业务模块引用nexus模块
掌握gradle构建Java项目的方方面面
学会linux各种软件环境的搭建
为后续课程的学习掌握预备知识
初中级java开发学习和从业人员
基于gradle5.4 构建结合各种软件神器,带你轻松快速入门spring boot2.0开发;从单一工程到gradle多模块开发告诉你模块怎麼拆怎么重用;从功能开发到单元测试,教你编写可维护可扩展可测试的高质量代码对linux开发环境还不熟悉的小伙伴,番外篇带你快速入門赶快和鹏哥一起来学习吧!
经济实惠,包含的知识点挺多的可以了解很多最新的一些东西。