Java-EE-SpringMVC与MyBatis企业开发实战-5-Spring-IoC和AOP课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Java-EE-SpringMVC与MyBatis企业开发实战-5-Spring-IoC和AOP课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java EE SpringMVC MyBatis 企业 开发 实战 Spring IoC AOP 课件
- 资源描述:
-
1、第五章第五章 Spring框架框架(IoC和和AOP)SpringMVC与MyBatis企业开发实战Spring框架的组成IoC(Inversion of Control控制反转)q 在Java代码中就需要用到Spring的容器来管理所有的JavaBean类,把这种主动的依赖关系变成被动的依赖注入。也就是我们不主动实例化对象,你将看不到类似于new Engine()这样的代码,而是通过Spring容器来管理类的实例化以及类与类之间的关系。当我们需要某个对象(Engine或Tire)的时候,由Spring容器来实例化需要的对象。所有的这些实例化好的对象共同存在Spring容器中,当我们的主动请求
2、方(Car)需要Engine或Tire对象的时候,由Spring容器把实例化好的Engine和Tire对象注入到Car中,这个就叫依赖注入。而原来主动创建对象的方式则变成了被动注入对象的方式,原来的主从关系也就发生了反转,我们称之为控制反转(Inversion of Control,英文缩写为IoC),所以Spring容器也是一个IoC容器。案例讲解案例代码通过set方法注入engine和tire对象/*汽车类*/public class Car private Engine engine;/发动机类private Tire tire;/轮胎类/添加set方法用于注入public void s
3、etEngine(Engine engine)this.engine=engine;public void setTire(Tire tire)this.tire=tire;/*汽车发动的方法*/public void run()engine.fire();/调用发动机类的点火方法tire.roll();/调用轮胎的滚动方法System.out.println(3.汽车开动);/汽车开动package org.newboy.test;import org.newboy.bean.Car;import org.springframework.context.ApplicationContext;
4、import org.springframework.context.support.ClassPathXmlApplicationContext;/*汽车的测试类*/public class TestCar public static void main(String args)/*创建Spring的上下文,相当于得到Spring的容器*ApplicationContext是个接口,ClassPathXmlApplicationContext是实现类,*所带的参数applicationContext.xml是配置文件名*/ApplicationContext context=new Clas
5、sPathXmlApplicationContext(applicationContext.xml);/*getBean(car)相当于从Spring容器中取出id=car的对象*这个方法返回的是Object对象,所以强转成Car对象*/Car car=(Car)context.getBean(car);/调用car的run()方法car.run();package org.newboy.bean;/*发动机的接口*/public interface Engine/*发动机点火的方法*/public void fire();package org.newboy.bean;/*轮胎类*/publ
6、ic interface Tire/*轮胎转动的方法*/public void roll();package org.newboy.bean.impl;import org.newboy.bean.Engine;/*自动发动机的实现类*/public class AutoEngineImpl implements Engine/*实现发动机点火的方法*/public void fire()System.out.println(1.自动档发动点火);案例代码package org.newboy.bean.impl;import org.newboy.bean.Engine;/*手动发动机类*/p
7、ublic class ManualEngineImpl implements Engine/*手动发动机点火的方法*/public void fire()System.out.println(1.手动档发动点火);package org.newboy.bean.impl;import org.newboy.bean.Tire;/*15寸轮胎实现类*/public class TireR15Impl implements Tire/*轮胎转动的方法*/public void roll()System.out.println(2.半径为15的轮胎滚动);/*汽车类*/public class C
8、ar private Engine engine;/发动机接口private Tire tire;/轮胎接口public void setEngine(Engine engine)this.engine=engine;public void setTire(Tire tire)this.tire=tire;/*汽车发动的方法*/public void run()engine.fire();/调用发动机类的点火方法tire.roll();/调用轮胎的滚动方法System.out.println(3.汽车开动);/汽车开动代码import org.newboy.bean.Car;import or
9、g.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/*汽车的测试类*/public class TestCar public static void main(String args)ApplicationContext context=new ClassPathXmlApplicationContext(applicationContext.xml);/分别得到自动和手动汽车Car autoCar=(Car
10、)context.getBean(autoCar);Car manualCar=(Car)context.getBean(manualCar);/调用car的run()方法autoCar.run();System.out.println();manualCar.run();使用p命名空间注入属性代码自动注入q 通过上面的applicationContext.xml配置文件会发现一个问题,当一个类需要注入的属性特别多的时候,就需要写大量的注入代码。如果一个项目中的类比较多,尤其是大量项目,有大量的类需要配置和属性需要注入的时候,就会导致applicationContext.xml配置文件臃肿。所
11、以Spring提供了自动注入的方式减少XML配置文件的工作量。代码 构造器注入/默认构造方法public Car()super();/带全部参数的构造方法public Car(Engine engine,Tire tire)this();this.engine=engine;this.tire=tire;Bean的作用域Bean的作用域的作用域含义含义singleton默认的作用域,仅为每个Bean对象创建一个实例。prototype可以根据需要为每个Bean对象创建多个实例。request为每个HTTP请求创建它自有的一个Bean实例,仅在Web相关的ApplicationContext中生
12、效。session为每个HTTP会话创建一个实例,仅在Web相关的ApplicationContext中生效。global session为每个全局的HTTP会话创建一个实例。一般仅在porlet上下文中使用生效,同时仅在Web相关的ApplicationContext中生效。application为每个ServletContext创建一个实例。仅在Web相关的ApplicationContext中生效。AOP(Aspect Oriented Programming面向切面编程)q AOP 的实现原理其实就是使用代理模式,由 AOP 框架动态生成的一个代理对象,该对象可作为代替目标对象使用。A
13、OP 代理包含了目标对象的全部方法,但 AOP 代理中的方法与目标对象的方法存在差异,AOP 方法在特定切入点添加了增强处理,并回调了目标对象的方法。q Spring 中 AOP 代理由 Spring 的 IoC 容器负责生成、管理,其依赖关系也由 IoC 容器负责管理。因此,AOP 代理可以直接使用容器中的其他 Bean 实例作为目标,这种关系可由 IoC 容器的依赖注入提供。使用注解实现AOPq AspectJ是一个面向切面的框架,它扩展了Java语言,定义了AOP 语法,能够在编译期提供代码的织入。Spring通过集成AspectJ实现了以注解的方式定义增强类,大大减少了配置文件中的工作
展开阅读全文
链接地址:https://www.163wenku.com/p-3372084.html