已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第19章:面向方面编程(SpringAOP),1 1,目录,1,2,AOP简介,基于XML配置文件的AOP实现,2,3,基于AspectJ注释的AOP实现,19.1,AOP简介,3,在传统的业务处理代码中,通常执行日志记录、参数有效性验证、异常处理、事务控制和其他操作。甚至我们经常不得不关心这些操作的代码是否被正确地处理,例如,在哪里忘记完成业务日志,在哪里在异常情况下忘记添加用于事务回滚的代码,以及更令人担心的是,如果需要修改系统日志的格式或安全验证策略,将需要修改多少代码,等等。这些“常见”的东西,如日志、事务和安全验证,在实现业务逻辑时需要注意,并且分散在整个系统中,被称为“方面”或“关注点”。如果这些“方面”可以被集中处理,那么这些“方面”可以在特定操作期间被动态地编织到容器中。这至少有以下两个好处:(1)减少“方面”代码中的错误,并在处理策略更改时进行统一修改。(2)在编写业务逻辑时,您可以专注于核心业务。AOP需要做的是将“方面”从系统中分离出来,并集中实现它们。以便独立编写业务代码和方面代码,并在系统运行时将方面“编织”到系统中。19.1面向方面编程入门,4。当使用AOP时,将涉及诸如切面、通知、切入点、目标对象、代理对象、编织等概念。以下是对这些概念的简要介绍。(1)部分:实现方面(日志、事务、安全验证),如日志部分、事务部分、权限部分等。在实际应用中,它通常是在存储中实现的一个常见的Java类。为了被AOP容器识别为切面,它需要在配置中通过标记来指定。(2)注意:它是切面的具体实现。以目标方法为参考点。根据不同的放置位置,可以分为5种类型:预通知、后通知、异常通知、绕回通知和最终通知。正切类中的方法所属的特定通知类型需要在配置中指定。(3)入口点:用于定义应该将哪些连接点通知编入。(4)目标对象:指要织入切面的对象,即已通知的对象。这些对象只包含核心业务逻辑代码,以及日志、事务、安全验证等所有功能。正在等待AOP容器被织入。(5)代理对象:在将通知应用于目标对象之后动态创建的对象。代理对象的功能相当于目标对象中实现的核心业务逻辑功能加上方面(日志、事务、安全验证)代码实现的功能。(6)编织:对目标对象应用切面以创建新代理对象的过程。SpringAOP通知包括预通知、返回通知、正常返回通知、异常通知和绕回通知。本节将基于XML配置文件实现预通知、返回通知、异常通知和绕回通知。5,19.2.1预先通知,6,预先通知在连接点(编织业务方法)之前执行,除非此处出现异常,否则不会影响连接点的执行。下面是一个如何实现预通知的例子,其过程如下:(1)复制并命名spring_1项目为“spring_5”,并将其导入到MyEclipse开发环境中。(2)将spring-aop-4.3.5.RELEASE.jar、Spring-Aspects-4 . 3 . 5 . release . jar、aopalliance-1.0和aspectjweaver-1.8.6.jar文件添加到spring_5的lib目录中,然后将jar包添加到项目的构建路径中。(3)创建包com.shw.service,在包中创建界面MealService,添加浏览方法,模拟用户浏览食物的业务。(4)创建接口mealservice的实现类MealServiceimpl,将其存储在com.shw.service.impl包中,并实现浏览方法。(5)创建包com.shw.aop,在包中创建日志类,并编写在类中生成日志记录的方法myBeforeAdvice。(6)在Spring配置文件应用上下文中编辑Spring配置文件。xml、LogDVice和业务组件MealService原本是两个不相关的类和接口,通过AOP元素以AOP配置方式组装,从而实现LogDVice中的日志通知编织到MealService中,实现预期的日志记录。(7)在com.shw包中创建测试类TestAOP。java (8)执行测试类TestAOP.java(8)观察控制台输出。6,19.2.2返回通知,7,返回通知在连接点执行完成后执行,无论正常执行完成还是异常抛出,返回通知的内容都将被执行。下面是一个如何实现退货通知的例子。过程如下:(1)将方法myAfterReturnAdvice作为返回通知添加到LogAdvice类。(2)在Spring配置文件applicationContext.xml中的元素中添加一个元素,并将日志通知类中的MyAfterReferenceNotification方法指定为返回通知。(3)在applicationContext.xml中注释预通知的配置(4)执行TestAOP并观察控制台输出。7,19.2.3异常通知,8,异常通知在连接点抛出异常后执行。下面是一个例子来演示如何实现异常通知,其过程如下:(1)将方法myThrowingAdvice作为异常通知添加到LogAdvice类中。(2)修改MealServiceImpl类中的show方法,人工抛出异常。(3)向Spring配置文件applicationContext.xml中的元素添加一个元素,并将日志通知类中的myThrowingAdvice方法指定为异常通知。(4)在applicationContext.xml中注释预通知和返回通知的配置(5)再次执行测试类TestAOP并观察控制台输出。8、19.2.4环绕通知、9、环绕通知环绕连接点,例如方法调用之前和之后。这是最强大的通知类型,可以在方法调用前后自定义一些操作。环绕通知还负责决定是继续ProceedingJoinPoint(调用processjoinpoint的继续方法)还是中断执行。下面是一个例子来说明如何实现环绕通知。过程如下:(1)将方法myAroundAdvice作为环绕通知添加到LogAdvice类中。(2)修改MealServiceImpl类中的浏览方法,并通过while循环延长方法的执行时间。(3)在Spring配置文件applicationContext.xml中的元素中添加一个元素,并在日志通知类中指定myAroundAdvice方法作为包装通知。(4)在applicationContext.xml中注释预通知、返回通知和异常通知的元素配置。(5)再次执行测试类TestAOP并观察控制台输出。基于AspectJ注释9,19.3,10的面向方面编程实现,基于XML配置文件的面向方面编程实现不可避免地在Spring配置文件中配置了大量的信息,这不仅造成了配置上的麻烦,也导致了配置文件的膨胀。注释注释技术能够减轻配置文件的重量。Spring为AOP的实现提供了一组注释,以取代在Spring配置文件中为AOP功能的实现配置的臃肿代码。这些注释如下:(1)定义一个切面。(2)Pointcut:定义一个入口点,入口点的名称由一个方面的名称定义。(3)之前:定义预先通知。(4)AfterReturning:定义发布通知。(5)售后服务:定义异常通知。(6)环绕:定义环绕通知。10,11,19.3基于AspectJ注释的AOP实现。使用AspectJ注释来重新实现19.2小节中的日志类函数,包括以下步骤:(1)将项目spring_5复制并命名为“spring_6”,并将其导入到MyEclipse开发环境中。(2)在Spring_6项目中,修改Measervice接口的实现类MealServiceimpl,向该类添加 component(“Measervice”)注释,并在Spring容器中自动创建MealServiceimpl类的Bean实例。(3)修改LogAdvice类,并使用注释来定义Bean、切面、切点和四种类型的通知。(4)修改Spring配置文件,配置自动扫描的包,并打开基于AspectJ部分的注释处理器。(5)在LogAdvice类中,依次启用一个通知方法进行测试,其他通知方法被注释,并且根据测试的通知类型的需要修改Me
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于神经网络的语音识别
- 房屋打包委托协议书
- 房屋提前退房协议书
- 房屋整租间合同范本
- 房屋电梯移交协议书
- 房屋竞买协议书范本
- 房屋置换居间协议书
- 房屋裂缝修补协议书
- 房屋财产保存协议书
- 房屋边界调解协议书
- 2025年天翼云高级运维工程师认证参考试题库(含答案)
- 医院合作体检协议书
- 八年级语文下册第三单元《红色经典》“表达交流”综合实践志趣北师大版教案
- 活动执行协议合同书
- 2025年超星尔雅学习通《生物学与生命科学》考试备考题库及答案解析
- 交付管理岗转正答辩
- 落实企业安全生产主体责任知识试题及答案
- 2025广东东莞市樟木头镇招聘编外聘用人员14人笔试考试参考题库及答案解析
- 2025湖北随州北星汇能产业发展有限公司招聘延期笔试考试参考题库及答案解析
- 石榴树修剪培训课件
- 2026年东营科技职业学院单招综合素质考试题库附答案
评论
0/150
提交评论