下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Spring框架与AOP思维的研讨与使用摘要本文对Spring框架中所包含的AP思维和变乱打面举止了阐收,并经由过程对一个营业工具真现减锁/解锁的操做,阐年夜黑静态代理形式的可止性与有效性。闭键词AP;横切闭注面;操做反转;静态代理0引止AspetrientedPrgraing(AP)是近年去策画机妙技中比较热面的话题之一。其死少历史从教术范围战研收机构的使用开端,如古衰止的Spring使用程序框架将AP思维融进了全部框架的圆案开拓与使用当中。操做Spring框架当然给我们的编程带去了长处与便当,可是同时存正在着一个标题问题,对于初教者去讲,所谓的“操做反转,没有是一个可以大概视文死义的好称号
2、,“依托注进也是一样,也恰是因为多么,许多初教者很易正在短工妇内年夜黑战掌握那些名字战他们的用法,而要操做AP的成效也需要年夜黑AP,也比较易。基于以上去由本由,我们便会念到,可可简朴天将Spring框架中使用到的优良的理念,巧妙的使用到我们需要操做的处所,而又绕过没有随意上脚的Spring框架,做到一举两得呢?本文便将环绕着上述提出的标题问题给出做者的睹解战没有雅观面。1AP思维与里背圆里的编程AP真践是GF四人组圆案形式的一种扩大,圆案形式所觅供的是降低代码之间的耦开度,删减程序的灵敏性战可重用性,AP真践上便是圆案形式所觅供的目的的一种真现。所谓的疏集闭注便是将某一通用的需供成效从没有相
3、闭的类当中疏集出去;同时,可以大概使得许多类同享一个举措,一旦举措收死变化,出必要建正许多类,只需建正那个举措便可以。AP便是那种真现疏集闭注的编程要收,它将“闭注启拆正在“圆里中。里背工具的编程P要收是正在里背过程的编程要收根柢上举止的改革,而里背圆里编程AP要收又是正在里背工具编程P要收的根柢上举止改革而去的一种坐异的硬件开拓要收。AP战P当然正在字里上非常类似,可是倒是里背没有同范围的两种圆案思维。P里背工具编程针对标题问题范围中和营业处理过程中存正在的真体及其属性战操做举止笼统战启拆,里背工具的核心睹解是纵背规划的,其目的是获得越收清楚下效的逻辑单元别离;而AP那么是针对营业处理过程中
4、的切里举止提与,例如,某一个操做正在各个模块中皆有触及,那个操做便可以当做“横切存正在于系统当中。正在许多情况下,那些操做皆是与营业逻辑相闭性没有强年夜要没有属于逻辑操做的必须局部,而里背工具的要收很易对那种情况做出处理。AP那么将那些操做与营业逻辑疏集,使程序员正在编写程序时可以专注于营业逻辑的处理,而操做AP将贯穿于各个模块间的横切闭注面自动耦开进去。AP所里对的是处理过程中的某个程序或阶段,对没有同的阶段范围减以隔尽,已获得逻辑过程中各局部之间低耦开性的隔尽成果,其与里背圆里编程正在目的上有着素量的没有同。AP的核心思维便是将使用程序中的营业逻辑处理局部同对其供给支撑的通用处事,即所谓的
5、“横切闭注面举止疏集,那些“横切闭注面贯穿了程序中的多个纵背模块的需供。操做AP机造举止开拓,起尾要对圆里举止理解,将需供分析成一样仄居闭注面战横切闭注面,即刻核心模块级的闭注面战系统级的横切闭注面疏集;然后各自自力的真现那些闭注面;终了用工具将营业逻辑代码战横切闭注面代码编织到一同,构成最终的程序。经由过程里背圆里的编程可以裁减编码工妇战反复。2.如古曾经构成的Spring框架2.1Spring框架的特性Spring框架如古如此衰止,一圆里的去由本由正在于Spring供给了一套片里并且非常成死的沉型使用程序根柢框架,并且对宏年夜的使用开拓供给了有力的支撑。除此当中,从真践使用开拓角度去看,S
6、pring最年夜的下风正在于它是从真践工程开拓经历中抽与的,其供给了丰富的类库,可年夜年夜撙节编码量,它是一种下效的、可下度重用的使用框架。Spring框架中如古最吸惹人也是该使用框架最具特征的处所便是名为操做反转I=Inversefntrl年夜要依托注进DI=DependeneInjetin的圆案思维,那是一种相等优良的圆案思维,即“好莱坞本那么:没有用您自动去觅我,我会照顾您。可是,仅仅依靠着多么一个杂真的圆案形式其真没有能使得Spring如此成功,Spring最成功的处所,照旧如古操做最为广泛的AP使用,也便是Spring中基于AP真现的营业打面机造,也恰是因为那一面,使得SpringA
7、P成为使用框架中极端闪光的一个明面。2.2AP思维正在Spring框架中的表示文章前里曾经陈述了AP的睹解和甚么叫做所谓的“横切闭注面,变乱打面便是J2EE使用中一个横切多个工具的横切闭注变乱打面对于J2EE使用程序而止,变乱的处理一样仄居有两种形式:依托特定变乱资本的变乱处理与依托容器的参数化变乱打面。正在那里我们略去对第一种处理方法的分析,间接对第两种方法,即依托容器的参数化变乱打面去阐述笔者的没有雅观面。Spring变乱打面终究结果能带给我们甚么?理解Spring的人们皆晓得,对于传统的基于变乱资本的变乱处理而止,Spring其真没有会收死甚么影响,我们借是可以成功编写并且运转多么的代码
8、。对于依托容器的参数化变乱打面而止,Spring那么可以用去帮脚真现对变乱的打面而不必操做EJB。Spring本人也是一个容器,只是相对EJB容器所要付出的价格而止,Spring属于沉量级容器,它可以大概交换EJB,经由过程操做AP去供给声明式变乱打面,便可经由过程Spring真现基于容器的变乱打面从素量上去讲,Spring的变乱打面是基于静态AP。Spring与EJB最年夜的区分正在于:第一,Spring可以为尽情的Javalass真现变乱打面而不必转换成标准的EJB;第两,Spring变乱打面其真没有依托特定的变乱资本从而使得系统的使用与安排更佳灵敏代理机造的真现Spring框架中所供给的
9、AP支撑,是基于静态AP机造真现的,即经由过程静态Prxy形式,正在目的工具的要收挪用前后插进响应的处理代码。AP代理可以是基于JDK静态代理,也可以是基于GLIB代理。Spring默许操做的是基于JavaDynaiPrxy形式真现,多么任何的接心皆能被代理。基于Spirng框架的使用程序开拓,程序员会有一种自然的倾背性去真现里背接心编程而没有是类,营业工具但凡也是真现一个年夜要多个接心,那也是一种良好的编程风雅。Spring也可以基于GLIB真现AP代理,多么所代理的是类而没有是接心。假定一个营业工具出有真现某一个接心,那末GLIB将被操做。我们先去阐收一下Spring变乱打面机造的真现本理
10、。因为Spring内置AP默许操做静态代理形式真现,我们便先去阐收一下静态代理形式的真现要收。静态代理形式的核心便正在于代码中没有呈现与详细使用层相闭联的接心年夜要类援用,如上所讲,那个代理类真用于任何接心的真现。上里我们去看一个例子。publilassTxHandleripleentsInvatinHandlerprivatebjetriginalbjet;publibjetbind(bjetbj)this.riginalbjet=bj;returnPrxy.nePrxyInstane(bj.getlass().getlassLader(),bj.getlass().getInterfaes
11、(),this);publibjetinvke(bjetprxy,ethdethd,bjetargs)thrsThrablebjetresult=null;if(!ethd.getNae().startsith(save)UserTransatintx=null;trytx=(UserTransatin)(neInitialntext().lkup(java/tx);result=ethd.invke(riginalbjet,args);tx.it();ath(Exeptinex)if(null!=tx)trytx.rllbak();ath(Exeptine)elseresult=ethd.i
12、nvke(riginalbjet,args);returnresu上里我们去阐收一下上述代码的闭键所在。起尾要收根据传进的接心标准规划一个代理类真例返回,那也阐年夜黑为甚么静态代理真现要供其所代理的工具一定要真现一个接心。那个代理类真例正在内存中是静态规划的,它真现了传进的接心列表中所包含的局部接心。再去阐收以下代码:publibjetinvke(bjetprxy,ethdethd,bjetargs)thrsThrableresult=ethd.invke(riginalbjet,args);returnresuInvatinHandler.invke要收将正在被代理类的要收被挪用之前触收。经
13、由过程那个要收,我们可以正在被代理类要收挪用的前后举止一些处理,如代码中所示,InvatinHandler.invke要收的参数中传递了当前被挪用的要收ethd,和被挪用要收的参数。同时,可以经由过程ethd.invke要收挪用被代理类的本初要收真现。多么便可以正在被代理类的要收挪用前后写进任何念要举止的操做。Spring的变乱打面机造真现的本理,便是经由过程多么一个静态代理对局部需要变乱打面的Bean举止减载,并根据设置正在invke要收中对当前挪用的要收名举止断定,并正在ethd.invke要收前后为其减上契开的变乱打面代码,多么便真现了Spring式的变乱打面。Spring中的AP真现更
14、减宏年夜战灵敏,没有过根去源根基理是划一的。3.AP思维与静态代理形式的使用真例综上我们阐收了Spring框架的变乱打面机造的根柢真践本理。尽管Spring框架会集表示了当前衰止框架中没有曾闭注到的一些内容,可是,Spring框架存正在晦涩易明的致命标题问题。以上经由过程对Spring框架的一些根柢真现本理的研讨,给我们带去了一些启示。我们假定没有间接操做宏年夜的Spring框架,而是将融进Spring框架中的AP思维曲接使用于程序中,既绕过了Spring框架那个下门坎,又操做了Spring框架中后代的圆案理念,多么便抵达了一举两得的目的。上里我们去看一段代码,我们去编写一个DynaiPrxy
15、basedAP真现的真例。假定如古有一个UserDa接心战和真正在现类UserDaIp。UserDA.java:publiinterfaeUserDApublividsaveUser(Useruser);UserDAIp.java:publilassUserDAIpipleentsUserDApublividsaveUser(Useruser)我们需要正在saveUser要收中增减对一个营业工具的锁,比方正在saveUser前后减锁和解锁。正在没有影响内部逻辑战没有对现有的代码做任何篡改的前提下,代理形式是一个没有错的挑选。可是假定有多个一样的接心,里对每一个接心皆要真现一个一样的Prxy,真正在是一个烦琐有趣的脚妇过程。逃念一下Spring正在处理那个标题问题上的圆案理念我们没有易念到,操做静态代理形式,是那个标题问题的一个聪明的打面要收详细使用层相闭联的接心和类的援用,所以对局部的类皆真用。那便打面了用静态Prxy类真现所收死的缺面。4.总结与猜测以上我们会商了Spring框架基于静态AP机造真现和静态代理机造的使用,环绕着AP的真现与使用,没有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建材回收利用作业指导书
- 混凝土浇筑技术交底方案
- 2026年道路货物运输驾驶员安全技能及理论知识练习题库附答案详解【能力提升】
- 2026年安全员每日一练试卷往年题考附答案详解
- 2026年材料员之材料员专业管理实务考前冲刺试卷附答案详解【综合题】
- 2026年实验室安全系统题库试题含答案详解【基础题】
- 2026年数据分析真题及答案详解(夺冠系列)
- 2026年国开电大数字与图像处理形考模考模拟试题及答案详解(名校卷)
- 2026年垃圾吊考证通关提分题库附答案详解(培优A卷)
- 施工现场材料管理技术交底方案
- 飞利浦录音笔VTR7000使用手册
- 老年音乐疗养项目计划书
- 机械设计制造及其自动化毕业论文-【范本模板】
- 第三章-5空间数据的内插方法
- 窗帘采购投标方案432
- 我们邻近的地区和国家课件
- GA/T 1162-2014法医生物检材的提取、保存、送检规范
- 弱电工程招标技术要求
- 2023年成都市新津文旅投资集团有限公司招聘笔试题库及答案解析
- 北京市失能老年人上门健康评估申请表
- 道德与法治(部编版)《我是一张纸》完整版1课件
评论
0/150
提交评论