下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第14单元Spring框架中的AOP技术,单元描述,对于一个大型的应用程序而言,日志管理是其必不可少的组成部分。通过日志信息,可以方便获得程序在运行过程中产生的相关信息。Spring框架中的AOP技术是一个基于的AOP编程模式,是一种全新的编程思想,在Spring框架中有很多其它技术都建立在Spring AOP的基础之上。Spring 框架的AOP技术能够很好地解决大型应用系统中的日志管理问题。本单元将初步介绍Spring的相关知识,为深入学习Spring做准备。本单元将重点介绍Spring框架中的AOP技术。,单元目标,了解AOP技术的基本概念; 了解Spring框架中AOP技术的简介; 掌
2、握Spring的四种通知方式; 掌握Spring的切入点的使用方法; 理解Spring AOP的代理模式。,14.1任务1引入性案例,任务描述:对于一个大型的应用系统而言,日志管理是必不可少的重要组成部分。在本书要完成的项目“网上购物系统”中,同样需要日志管理,日志信息的输出功能必不可少。通过日志信息,用户和管理员可以方便的获得程序在运行过程中的相关信息。 任务目标:本案例将实现用户登录系统执行操作之前和之后输出声明式日志信息的功能,并找出这种解决方案的不足。,14.1.1案例分析,编写日志输出程序,模拟用户登录系统,并在用户登录操作执行前后分别输出相应的日志信息,程序的执行结果如图14-1所
3、示。,14.1.2设计步骤,(1)在MyEclipse中创建一个名为UserLogSystem的Java工程; (2)创建名为log的包; (3)在log包中创建OutPutLogging.java文件,实现日志输出功能; (4)在log包中创建测试类TestLog.java文件; (5)运行程序。,14.1.3具体实现,1搭建环境 2在log包中创建OutPutLogging.java文件 3在log包中创建测试类TestLog.java文件 4运行程序,14.2任务2AOP概述,任务描述:Spring框架中的AOP技术与OOP类似,也是一种编程模式,但是AOP并不能取代OOP,它只是对OO
4、P的扩展和补充。本任务将从AOP与OOP的关系入手,介绍AOP的核心概念以及Java动态代理实现AOP的3个方面,对AOP技术进行详细介绍。 任务目标:了解AOP技术的基本概念,对AOP有一个基础性的认识,为后续的深入学习做好铺垫。,14.2.1OOP与AOP的关系,OOP实现的是父子关系的纵向代码重用,难以解决横向代码重用问题。AOP(Aspect Oriented Programming,面向方面编程),是对OOP的补充和完善,它允许开发人员动态地修改OOP定义的静态对象模型开发者可以不用修改原始的OOP对象模型,甚至无需修改OOP代码本身,就能够解决OOP中存在的问题。,14.2.2AO
5、P的相关概念,(1)Concern(关注点) (2)Joinpoint(连接点) (3)Advice(通知) (4)Pointcut(切入点) (5)Aspect(方面) (6)Target(目标对象) (7)Weaving(织入),14.2.3Java动态代理与AOP,实例1:该实例将通过Java动态代理来实现引入性案例中的日志信息输出的功能。 1搭建环境 2创建接口Login.java 3创建并编写接口login.java的实现类LoginImpl.java 4创建并编写代理类LogProxy.java 5创建并编写测试类TestLog.java。 6运行程序 7运行结果分析,14.3任务
6、3Spring AOP中的通知,任务描述:通过前面的介绍得知,Spring AOP的连接点模型是建立在基于拦截器技术的方法回调基础之上,也就是说,Spring的通知可以在方法回调的各个区间织入系统。那么通知将在何时织入系统呢?Sping AOP提供了5中类型的通知,使用这些通知可以清楚的确定在方法回调之前、之后或者是在任意时刻织入通知。 任务目标:了解Spring AOP支持的通知类型,掌握各种通知的织入方式。,14.3.1Spring AOP支持的通知类型,BeforeAdvice(前置通知) AfterReturningAdvice(后置通知) MethodInterceptor(环绕型通
7、知) ThrowAdvice(抛出通知) IntroductAdvice(引入通知),14.3.2BeforeAdvice,实例2:构建名为TestSpringAdvice工程,在beforeAdvice包中实现对前置通知的测试。 1搭建环境 2在beforeAdvice包中创建WriteInformation.java文件 3在beforeAdvice包中创建BeforInfo.java文件 4在beforeAdvice包中创建TestBeforeAdvice.java文件 5运行程序,14.3.3AfterReturningAdvice,实例3:在TestSpringAdvice工程的af
8、terAdvice包中实现对后置通知的测试。运行结果如图14-6所示。 1搭建环境 2在afterAdvice包中创建WriteInformation.java文件 3在afterAdvice包中创建AfterInfo.java文件 4在afterAdvice包中创建TestAfterAdvice.java文件 5运行程序,14.3.4MethodInterceptor,实例4:在TestSpringAdvice工程的methodInterceptor包中实现对环绕型通知的测试。 1搭建环境 2在methodInterceptor包中创建WriteInformation.java文件 3在me
9、thodInterceptor包中创建MethodInterceptorInfo.java文件 4在methodInterceptor包中创建TestMethodInterceptor.java文件 5运行程序,14.3.5ThrowAdvice,实例5:构建名为TestSpringAdvice工程,在throwAdvice包中实现对抛出通知的测试。 1搭建环境 2在throwAdvice包中创建ExceptionClass.java文件 3在throwAdvice包中创建ThrowsAdviceInfo.java文件 4在throwAdvice包中创建TestThrowAdvice.java
10、文件 5运行程序,14.4任务4Spring AOP的切入点,任务描述:截止到目前为止,已经了解到了不同类型的通知如何织入系统,以及在系统中运行的先后顺序。下面要解决的问题就是通知要在系统的什么位置织入?这就关系到Spring AOP的切入点。Spring框架提供了静态切入点、动态切入点以及自定义切入点来解决这一问题。 任务目标:重点学习Spring AOP提供的静态切入点和动态切入点。,14.4.1静态切入点,Spring AOP支持两种不同的切入点:静态切入点和动态切入点。如果切入点是静态的,那么Spring会针对目标上的每一个方法调用一次MethodMatcher的matches(Met
11、hod, Class)方法进行匹配,其返回值会被存储起来,以便日后调用该方法时使用。,14.4.2动态切入点,如果该切入点是动态切入点,那么Spring仍然会在目标方法第一次调用时使用MethodMatcher的matches(Method, Class)方法进行一个静态的测试匹配,来检查该方法是否适用。,14.4.3静态切入点测试实例,实例6:构建名为TestPointCut工程,在test包中实现对静态切入点的测试。运行结果如图14-9所示。 1搭建环境 2在test包中创建BeanOne.java、BeanTwo.java文件 3在test包中创建SimplePointCut.java
12、4在test包中创建SimpleAdvice.java 5在test包中创建TestPointCutExample.java,14.5任务5AOP的代理模式,任务描述:Spring AOP的核心就是基于代理和代理工厂的,在任务4涉及的工程TestSpringAdvice中多次使用到了Spring AOP的代理工厂ProxyFactory,但是没有做详细的介绍。该任务就来深入介绍Spring AOP中的代理以及代理工厂的机制和应用。 任务目标:深入理解Spring AOP中的代理以及代理工厂的机制和应用。,14.5.1理解代理,代理是一切AOP实现的基础。通过代理可以实现对不表对象进行拦截,以便
13、在其执行周期内的指定点织入相关通知内容,并最终获得一个添加了通知功能的代理对象返回给客户端。 Spring中有两种代理,一种是JDK Proxy代理类生成的JDK动态代理,另一种是CGLIB Enhancer类生成的CGLIB代理。,14.5.2ProxyFactory,在之前的实例中已经使用了ProxyFactory,Spring AOP的ProxyFactory是一种极为简单的、不依赖于IoC容器的控制AOP相关流程的方式。,14.6.3ProxyFactoryBean,由于使用ProxyFactory的程序不于Spring框架的IoC容器直接发生关系,所以在实际应用中往往会避免使用Pro
14、xyFactory的编程方式来创建AOP代理。ProxyFactoryBean组件可以通过声明的方式来创建代理,它能够使AOP应用和IoC容器结合在一起,这样Spring IoC容器不仅可以管理AOP组件,还可以为目标对象自动生成代理。,14.5.4AOP代理模式测试实例,实例7:构建名为TestProxyFactory工程,在test包中实现对JDK代理和CGLIB代理的测试。 1搭建环境 2在test包中创建Information.java接口程序 3在test包中创建WriteInformation.java文件 4在test包中创建BeforInfo.java文件,14.5.4AOP代
15、理模式测试实例,5在test包中创建JDKbean.xml配置文件 6在test包中创建TestJDKbean.java文件 7在test包中创建CGLIBbean.xml 8在test包中创建TestCGLIBbean.java文件,14.6任务6进阶式案例使用Spring框架中的AOP技术实现引入性案例,任务描述:通过本单元学习过的Spring AOP的相关知识,重新实现引入性案例的内容,在用户登录系统前后输出相应的日志信息。 任务目标:熟练掌握Spring AOP的编程技术。,14.6.1解决方案,(1)在MyEclipse运行环境中创建名为UserLoginLogSystem的Java
16、工程; (2)添加Spring框架所需的运行库文件; (3)创建接口文件Login.java; (4)创建接口实现文件LoginImpl.java; (5)创建LogAdvice.java实现通知的文件; (6)创建bean.xml完成代理的配置; (7)创建测试文件TestLog.java; (8)运行程序。,14.6.2具体实现,1搭建环境 2创建接口文件Login.java 3创建接口实现文件LoginImpl.java 4创建LogAdvice.java实现通知的文件 5创建bean.xml完成代理的配置 6创建测试文件TestLog.java 7运行程序,14.7.3运行效果,单元总结,本单元首先通过引入性案例给出了OOP方式解决日志信息输出的问题,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年天津工艺美术职业学院单招职业适应性考试题库附答案详解(能力提升)
- 2026年安徽国际商务职业学院单招职业技能考试题库附答案详解(培优b卷)
- 2026年天津财经大学珠江学院单招职业倾向性测试题库带答案详解(培优)
- 2026年四平职业大学单招职业适应性测试题库带答案详解(巩固)
- 2026年威海职业学院单招职业技能测试题库带答案详解(达标题)
- 2026年天津城市建设管理职业技术学院单招职业倾向性考试题库含答案详解(夺分金卷)
- 2026年四川西南航空职业学院单招职业技能测试题库及答案详解(有一套)
- 2026年宁波城市职业技术学院单招职业技能测试题库及答案详解1套
- 2026年天府新区信息职业学院单招职业技能考试题库及一套答案详解
- 2026年宁夏银川市单招职业倾向性测试题库含答案详解(综合题)
- 儿童青少年心理健康知识讲座
- 2025年广东省中考物理试题卷(含答案)
- 航运企业合规管理制度
- 2026年高考语文备考之非连续性文本阅读训练(人工智能、科技文化)
- 幼儿园伙食费管理制度
- 月结60天合同协议书
- 肉羊高效健康养殖与疫病防控技术培训
- 养老院食品安全培训
- 全球核安全形势课件
- 《婴幼儿常见病识别与预防》高职早期教育专业全套教学课件
- 《智能制造基础与应用》课件全套 第1-8章 绪论、智能制造数字化基础- 智能制造应用
评论
0/150
提交评论