Spring————动态代理、AOP

动态代理是在运行期创建目标对象的代理对象,对方法进行功能性增强。它可以不修改源码增强对象功能,如事务控制、权限判断。AOP(面向切面编程)是软件开发中的热点,用于降低业务逻辑各部分的耦合度,提高程序的可重用性和开发效率。Spring框架中的AOP支持基于XML和注解的配置,实现方法的前置、后置、异常和最终通知。
摘要由CSDN通过智能技术生成

什么是动态代理?
动态代理就是,在程序运行期,创建目标对象的代理对象,并对目标对象中的方法进行功能性增强的一种技术。在生成代理对象的过程中,目标对象不变,代理对象中的方法是目标对象方法的增强方法。可以理解为运行期间,对象中方法的动态拦截,在拦截方法的前后执行功能操作。

代理类在程序运行期间,创建的代理对象称之为动态代理对象。这种情况下,创建的代理对象,并不是事先在Java代码中定义好的。而是在运行期间,根据我们在动态代理对象中的“指示”,动态生成的。也就是说,你想获取哪个对象的代理,动态代理就会为你动态的生成这个对象的代理对象。动态代理可以对被代理对象的方法进行功能增强。有了动态代理的技术,那么就可以在不修改方法源码的情况下,增强被代理对象的方法的功能,在方法执行前后做任何你想做的事情。

二、为什么使用动态代理?
请看如下例子:一个演员cxk的本质工作是唱歌,跳舞等,但是演出前后为了吸引粉丝和大量的关注就需要进行各种业务的增强,如:联系业务、互联网造势、演出前的宣传、结算费用并纳税等一系列的操作。所以就用到了动态代理,我们可以把这个代理看成是经纪公司。

这样操作发现出现了大量重复的代码,如果有十个、一百个演员需要同样的处理那么代码需要重复十次、一百次。当然我们可以把这些功能封装成一个增强方法,然后在功能方法中进行调用,但是也出现了方法的十处、一百处的调用操作,一旦增强方法名字改变,就需要完成所有调用处代码的修改。或者有一天不需要这些增强操作了,就再次需要在这十处、一百处删除方法调用。所以这种操作不适用于大型的项目开发的需求,此时我们就必须使用Java的动态代理机制。

动态代理不需要修改源代码的基础上对原有类的功能进行增强。

在Java开发中如果一个类中的方法在基本功能之外需要进行功能扩充或者功能增强,如:事务控制、权限判断、日志记录等等操作,此时可以使用动态代理机制。

Java的JDK中Proxy类可以实现基于接口的动态代理,实现步骤示例如下:

三、如何使用动态代理:

1/因为Proxy类必须基于接口进行动态代理,所以首先创建接口,定义接口的规范,即功能方法的定义。

  2.定义实现接口的子类,实现接口定义的方法,此方法只需要把核心功能实现即可,其他增强的操作可以在代理类中实现。

 3.定义代理类,在代理类中对被代理对象进行方法增强

 运行结果:

AOP

 

一、对AOP的初印象

二、什么是AOP?
在软件业,AOP为Aspect Oriented Programming的缩写,意为: 面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术,AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

首先先给出一段比较专业的术语(来自百度):

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方
式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个
热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑
的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高
了开发的效率。

二、AOP基于XML配置的入门案例:

  1. 首先导入IOC和AOP所需要的jar包
  2. 创建BookService类,这个类完成核心功能操作。

 3.创建Loger类,这个类是用来做功能的增强。

 

4.在spring的beans.xml中开始进行AOP的配置 :

首先把核心类和增强类的bean配置到IOC的容器中
使用<aop:config>标签在进行AOP的配置,先通过aop:aspect标签标明谁是增强类。然后在标签中进行aop:before(前置)、aop:after-returning(后置)、aop:after-throwing(异常)、aop:after(最终)的配置,让增强类的某个方法对核心功能类的某一类方法进行功能增强。

  5.在测试类中测试

 

 环绕通知

1.环绕通知是一种提供自由灵活对核心类方法进行增强的操作手段,首先还是在beans.xml中配置环绕通知。

 

 2.接着我们需要在增强类中完善我们环绕通知的方法,这个方法需要定义一个ProceedingJoinPoint接口对象作为方法参数,且方法返回值是Object。

环绕通知的实现:其实就是通过ProceedingJoinPoint的实现类对象(spring框架会创建)获取要增强的那个类的方法参数、执行方法、获得方法返回值。然后在方法执行之前的操作就是前置通知、在方法执行后的操作就是后置通知、在异常处理中的操作就是异常通知、在finally中执行的操作就是最终通知。具体如下

 基于注解的AOP配置

1.首先跟之前的步骤一样

 

 2.首先关于定义IOC容器的bean标签使用注解替换。

 

 3xml配置的切面配置信息我们在增强类中使用@Aspect注解替代

 4 xml配置切入点的前置通知、后置通知、异常通知、最终通知分别使用@Before、@AfterReturning、@AfterThrowing、@After这四个注解替代,同时在注解中定义要增强那个包中那个类的那个方法,且使用表达式表示。

 

  1. 5 在beans.xml中配置注解的扫描,同时配置开启aop注解的支持。

 

  1. 6 在测试类中测试注解配置的操作是否生效。

 

认清幻想
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
写文章

热门文章

  • 【Calendar的常用方法】 3230
  • 【文件的读取与写入】 2421
  • 【专业课】9月12号专业学习 1080
  • Spring————动态代理、AOP 530
  • IOC和AOP以及spring框架的的面试宝典 349

最新评论

  • 【专业课】9月12号专业学习

    普通网友: 凯哥好帅 表情包

  • 【专业课】9月13专业课学习

    普通网友: 哥哥 同城dd约吗?表情包

  • 【专业课】9/15JavaScript初步学习

    普通网友: 表情包大爷的代码打的真不错表情包

大家在看

  • Linux配置nexus时,网站登录不上去原因 30
  • 基于SpringBoot的在线音乐网站的设计和实现(源码+LW+调试文档)
  • 《深度学习》—— 卷积神经网络(CNN)的简单介绍和工作原理 5
  • 基于SpringBoot的宠物店管理系统的设计和实现(源码+LW+调试文档)
  • mysql学习教程,从入门到精通,SQL 联表查询(Join)(21) 636

最新文章

  • 【linux】使用rpm下载mysql
  • 事务,事务的隔离级别和传播行为
  • IOC和AOP以及spring框架的的面试宝典
2023年11篇
2022年30篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司宿州网站优化哪家靠谱网站布局结构利于优化上虞网站优化选哪家滦县专业的网站优化哪家好网站搭建和优化南通市网站关键词优化哪里有卖优化网站排名克制云速捷值得郑州网站排名优化软件价格广东新网站优化宣城企业网站优化哪家值得信赖富阳网站推广优化seo网站优化费用商丘网站优化推广收费标准苏州网站快速优化排名黄冈网站优化公司排名宿迁网站优化天门网站seo优化徐汇区官方网站优化定制方案企业网站优化哪个最好龙岗网站优化及营销方案网站优化公司有哪些正规网站优化哪家好优化网站软件询问y火27星营销型网站怎么优化和推广网站优化去哪学习温州网站优化效果怎么样宜都网站推广优化网站结构优化有哪些需要注意长春求推荐好的网站优化与推广网站排名优化软件实惠火12星歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化