spring技术--IOC控制反转课件

上传人:飞*** 文档编号:49117908 上传时间:2018-07-23 格式:PPT 页数:42 大小:479KB
返回 下载 相关 举报
spring技术--IOC控制反转课件_第1页
第1页 / 共42页
spring技术--IOC控制反转课件_第2页
第2页 / 共42页
spring技术--IOC控制反转课件_第3页
第3页 / 共42页
spring技术--IOC控制反转课件_第4页
第4页 / 共42页
spring技术--IOC控制反转课件_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《spring技术--IOC控制反转课件》由会员分享,可在线阅读,更多相关《spring技术--IOC控制反转课件(42页珍藏版)》请在金锄头文库上搜索。

1、 Spring技术-IOC(控制反转)工厂模式n在面向对象的编程中,工厂模式是一种 经常被使用到的模式。根据工厂模式实 现的类可以根据提供的数据生成一组类 中某一个类的实例,通常这一组类有一 个公共的抽象父类并且实现了相同的方 法,但是这些方法针对不同的数据进行 了不同的操作 n工厂模式就是专门负责将大量有共同接 口的类实例化,而且不必事先知道每次是 要实例化哪一个类的模式。nX-PersonnXy-ChinesenXz-Americann工厂类-PersonFactoryn返回的究竟是Xy还是Xz的实例并不重 要,因为它们有相同的方法,只不过这 些方法的内部实现不同罢了。 public st

2、atic void main(String args) PersonFactory pf = new PersonFactory(); Person p = null; p = pf.getPerson(“Chinese“); System.out.println(p.sayGoodBye(“jack“); System.out.println(p.sayHello(“jack“); nApplicationContext context = new FileSystemXmlApplicationContext(“src/org/test/applicationCon text.xml“);

3、n Person p = (Chese)context.getBean(“chese“);n System.out.println(p.sayGoodBye(“rose“);n System.out.println(p.sayHello(“rose“);容器 n 为组件提供运行环境n 提供底层服务,包括事务,生命周期管理等 常见的容器 1 Servlet容器:支持Servlet,JSP等组件 2 EJB容器:支持EJB组件 3 Spring提供的IoC容器 为普通的JavaBean提供运行环境IOC简介IOC简介IOC简介 控制反转:Inversion of Controln 依赖注入:Dep

4、endency Injection依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个 概念。具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角 色(另一个Java实例,被调用者)的协助时,在传统的程序设计过程中,通常 由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再 由调用者来完成,因此称为控制反转;创建被调用者实例的工作通常由Spring 容器来完成,然后注入调用者,因此也称为依赖注入。IOC特点IoC的优点n 不必关心组件的创建n 不必管理组件的生命周期n 组件容易共享n 测试非常容易

5、IOC容器IOC容器如何使用IoC?n 选择一个IoC容器:Spring IoC容器n 告诉Spring如何管理Bean:编写XML 配置文件Spring提供IoC容器n BeanFactoryn ApplicationContextSpring提供IoC容器Spring提供IoC容器Spring提供IoC容器Spring提供IoC容器n定义 JavaBeannJavaBean实例的初始化,即通过IOC注 入其依赖性n基于Spring应用对JavaBean实例的使 用nIOC容器销毁JavaBean实例Bean的生命周期Bean的生命周期Bean的定义n一般情况下我们都是通过spring的配置

6、 xml文件的标记来定义的Bean的初始化n在spring中初始化一般为两种方法实现n1、在配置文档中指定init-method属性n2、实现norg.springframework.beans.factory.Initiali zingBean接口n 如果实现了上述接口,则会在 BeanFactory把所有Bean属性设置 后, 调用afterPropertiesSet()方法Bean的使用n在spring中Bean的使用分为三种方式n一 使用BeanWappern二 使用BeanFactoryn三 使用ApplicationContextBean的销毁n 调用DisposableBean接

7、口的destroy() 方法n 调用指定的destroy-method方法n一个例子:n一个人需要一把斧子.n模型: n调用者: 人n被调用者:斧子依赖注入n三种方式实现:n一 原始社会:调用者自己创建被调用者n二 工业社会:调用者向工厂要被调用者n三 共产主义社会:被调用者主动送上门依赖注入依赖注入的方式n 构造方法注入n 设置属性注入设值注入n设值注入:指通过setter方法传入被调用者的实例。npublic class Chinese implements Person n private Axe axe;npublic Axe getAxe() nreturn axe;nnpublic

8、 void setAxe(Axe axe) nthis.axe = axe;nnpublic void useAxe() naxe.chop();nnnnnnn设值注入构造注入n构造注入:指通过构造函数来完成依赖关系的设定,而不是通 过setter方法。npublic class American implements Person n private Axe axe;n public American(Axe axe)n this.axe = axe;n n public void useAxe() n axe.chop();n nnnnnn构造注入两种注入方式对比n一 设值注入优点:n设值

9、注入与传统的JavaBean的写法更 相似,所以更直观,自然。n对于复杂的依赖关系,采用构造注入, 会导致构造器过于臃肿,难以阅读n在某些属性可选的情况下,多参数的构 造器更加笨重n二 构造注入优点:n 可以在构造器中决定依赖关系的注入顺 序n对于依赖关系无需变化的bean,构造注 入更有用处n依赖关系只能在构造器中设定,组件内 部的依赖关系完全透明,更符合高内聚 的原则两种注入方式对比MessageSource实现国际化 nApplicationContext接口扩展了 MessageSource接口,因而提供了消息处理 的功能(国际化)。 n当一个ApplicationContext被加载

10、时,它会自 动在context中查找已定义为MessageSource 类型的bean。此bean的名称须为 messageSource。如果找到,那么所有对上 述方法的调用将被委托给该bean。 n如:资源文件内容:nmjrg_en_US.propertiesnmjrgwelcome.word=welcome:;time:1nmjrg_zh_CN.propertiesnmjrgwelcome.word=欢迎:;时间:1n显示:nwelcome:;time:Wed Dec 05 14:04:15 CST 2007n欢迎:;时间:Wed Dec 05 14:05:16 CST 2007nnati

11、ve2ascii mjrg_zh_CN.properties desc.propertiesnmjrgwelcome.word=u6b22u8fce:;u65f6 u95f4:1nnnmjrgnnnSpring提供的处理消息的基本接口 MessageSource实现国际化 String getMessage(String code, Object args, String default, Locale loc): 用来从MessageSource获取消息的基本方法。如果在指定的locale中没有找到消息, 则使用默认的消息。args中的参数将使用标准类库中的MessageFormat来作消息

12、中替换值 。 String getMessage(String code, Object args, Locale loc): 本质上和上一个方法相同,其区别在:没有指定默认值,如果没找到消息,会抛出一个 NoSuchMessageException异常。String getMessage(MessageSourceResolvable resolvable, Locale locale): 上面方法中所使用的属性都封装到一个MessageSourceResolvable实现中,而本方法 可以指定MessageSourceResolvable实现。npublic static void mai

13、n(String args) ApplicationContext context = new FileSystemXmlApplicationContext(“org/yjy/applicati onContext.xml“);nObject object = new Object“yjy“,(new Date().toString();nString massage = context.getMessage(“mjrgwelcome.word“, object, Locale.US);nSystem.out.println(massage);nBean的作用域n 通过scope指定n (默

14、认) Singleton:仅有一个实例n A a1 = context.getBean(“a“);n A a2 = context.getBean(“a“);n System.out.println(a1=a2); / true!n Prototype:每次都创建一个新实例n A a1 = context.getBean(“a“);n A a2 = context.getBean(“a“);n System.out.println(a1=a2); / false!小结n Spring IoC容器带来的好处:n 将组件交给Spring容器管理n 以“组装积木”的方式来装配组件n Spring框架的核心设计思想:n 针对接口编程n 使用依赖注入

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号