版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Spring主要特性介绍,本章任务,使用“依赖注入”实现“动态组装”的打印机,配置为使用colorInk、 b5Paper时的运行结果,配置为使用greyInk、 a4Paper时的运行结果,Spring之父,Rod Johnson SpringFramework创始人, interface21 CEO 丰富的c/c+背景,丰富的金融行业背景 1996年开始关注Java服务器端技术 Servlet2.4和JDO2.0专家组成员 2002年著写Expoert one-on-one J2EE设计与开发,改变了Java世界 技术主张:技术实用为本 音乐学博士,Spring简介,Spring : 轻量
2、级框架, Java EE的春天,当前主流框架 目标: 使现有技术更加易用,推进编码最佳实践 内容: 依赖注入容器,AOP实现(声明式事务), DAO/ORM支持,Web集成,Spring首先是个容器 管理Bean的容器:生成实例、装配、销毁实例等。 Bean的定义和相互关系可通过XML文件进行配置。 Spring是应用框架 提供完整的MVC框架。 很容易与其它的前段技术集成。 Spring的核心 IOC,控制反转,或称依赖注入(DI)。 AOP,面向切面的编程。 Spring的目的 简化企业级开发。,Spring是什么?,为何要使用Spring,Spring的优点。 低侵入式设计,代码的污染极
3、低。 DI容器降低了业务对象替换的复杂性,提高了组件之间的解耦。 AOP容器允许将一些通用任务如安全、事物、日志等进行集中式处理,从而提供了更好的复用。 ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。 高度开放性,并不强制应用完全依赖于Spring,可自由选用Spring框架的部分或全部。,Spring开发包,到下载Spring开发包。 dist: spring.jar文件,spring-Xxx.jar (spring.jar的子压缩包)。 docs:Spring的相关文档,包含开发指南,API参考文档。 lib:Sp
4、ring编译和运行所依赖的第三方类库。 samples: Spring的几个简单的示例。 src: Spring的源文件。 test:Spring的测试用例。,创建Spring工程,拷入jar包 基本jar文件。 distspring.jar libjakarta-commonscommons-logging.jar 如果使用了切面编程(AOP),还需要下列jar文件。 lib/aspectj/aspectjweaver.jar和aspectjrt.jar lib/cglib/cglib-nodep-2.1_3.jar 如果使用了JSR-250中的注解, 还需要下列jar文件。 libj2ee
5、common-annotations.jar,创建Spring工程,Spring的配置文件模版, . ,该配置模版可以从spring的参考手册或spring的例子中得到。配置文件的取名可以任意,文件可以存放在任何目录下,但考虑到通用性,一般放在类路径下。,创建Spring工程,编写Spring配置文件时,不能出现帮助信息 由于spring的schema文件位于网络上,如果机器不能连接到网络,那么在编写配置信息时候就无法出现提示信息,解决方法有两种: 1:让机器上网,eclipse会自动从网络上下载schema文件并缓存在硬盘上。 2:手动添加schema文件,方法如下: windwos-pre
6、ferences-Web and Xml-xmlcatalog 点add,在出现的窗口中的Key Type中选择URI,在location中选File system,然后在spring解压目录的dist/resources目录中选择spring-beans-2.5.xsd,回到设置窗口的时候不要急着关闭窗口,应把窗口中的Key Type改为Schema location,Key改为/schema/beans/spring-beans-2.5.xsd,为什么使用依赖注入(DI),面向对象使系统的实现变得容易,当系统复杂到一定程度时,仅仅面
7、向对象就不够了,目的:解耦合。实现每个组件块时只关注组件内部的事情,要点:明确定义组件间的接口,“过于”复杂的软件系统 组件化的思想 依赖注入:强制将组件的构建和使用分开,组件的使用,组件的生产,接口的定义,运行时注入,如何开发一个打印机? 打印机功能的实现依赖于 墨盒 和 纸张。 步骤: 1、定义墨盒和纸张的接口标准。 2、使用接口标准开发打印机。 3、组装打印机。 4、运行打印机。,怎样使用依赖注入,彩色墨盒,双色墨盒,怎样使用依赖注入,定义组件接口 墨盒接口:Ink 纸张接口:Page 使用接口开发打印机,public interface Ink public String getCol
8、or(int r,int g,int b); ,public interface Paper public static final String newline = rn; /* * 输出字符到纸张 */ public void putInChar(char c); /* * 得到输出到纸张上的内容 */ public String getContent(); ,public class Printer public Ink ink = null; public Paper paper = null; public void print(String str) System.out.prin
9、tln(使用+ ink.getColor(255, 200, 0).+颜色打印); for(int i=0;istr.length();+i)/ 逐字符输出到纸张 paper.putInChar(str.charAt(i); System.out.print(paper.getContent(); / 将纸张的内容输出 ,我们在开发打印机时,使用了Ink和Paper接口。但并不关心其实现。,ink和paper何时被实例化呢?,怎样使用依赖注入,3、组装打印机 1、为了方便组装,我们给Printer类的ink和paper属性增加setter方法,public class Printer publ
10、ic Ink ink = null; public Paper paper = null; . . public void setInk(Ink ink) this.ink = ink; public void setPaper(Paper paper) this.paper = paper; ,2、创建或得到Ink和Paper的实现类,怎样使用依赖注入,2、使用spring进行组装。编辑applicationContext.xml文件。,相当于: A4Paper a4Paper = new A4Paper(); a4Paper.setCharPerLine(10); a4Paper.setL
11、inePerPage(8);,依赖注入,相当于: ColorInk colorInk = new ColorInk();,怎样使用依赖注入,组装打印机,依赖注入:组装打印机, , , ,怎样使用依赖注入,4. 运行打印机,public static void main(String args) ApplicationContext context = new ClassPathXmlApplicationContext( applicationContext.xml); / 由Spring创建printer对象,并根据配置文件注入 / 依赖的组件,完成组装 Printer printer =
12、(Printer)context.getBean(printer); printer.print(几位轻量级容器的作者曾骄傲地对我.); ,配置为使用greyInk、 a4Paper时的运行结果,通过Spring: 我们可以象更换打印机的墨盒和打印纸一样地更换程序组件。 这就是依赖注入带来的魔力!,配置为使用colorInk、 b5Paper时的运行结果,编写gbeens.xml,使下面的程序输出: “张嘎说:三天不打小鬼子,手都痒痒”,public class Greeting private String person ; private String words ; public voi
13、d setPerson(String p) person = p; public void setWords(String w) words = w; public void sayGreeting() System.out.println(person + 说: + words); ,public static void main(String args) ApplicationContext context = new ClassPathXmlApplicationContext(gbeens.xml); Greeting g = (Greeting)context.getBean(g);
14、 g. sayGreeting(); ,总结,Spring包含哪些内容? 依赖注入的好处是? Spring怎么实现依赖注入?,依赖注入容器、AOP实现、DAO/ORM支持、Web集成,分离组件的使用和实现,添加getter/setter方法,使用配置文件组装,IoC(Inversion of Control ) 控制反转,控制反转,public class PersonServiceBean private PersonDao personDao = new PersonDaoBean(); public void save(Person person) personDao.save(person); ,PersonDaoBean 是在应用内部创建及维护的。 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。,DI(Dependency Injection)依赖注入 当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean 类可以改成如下:,依赖注入,public class PersonServiceBean private PersonDao person
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 母婴安全管理及护理
- itp诊治进展郭新红
- Flash摺纸艺术教学
- 《金属切削机床》-教学单元8
- 消防安全教育培训管理制度(带附件表单)
- 再生透水混凝土护坡抗滑稳定性验收监理细则
- 混合集成电路装调工岗前设备维护考核试卷含答案
- Bobath疗法对脑卒中恢复期患者的康复治疗子项目
- 工业固体废物处理处置工复试水平考核试卷含答案
- 苯基氯硅烷生产工诚信道德考核试卷含答案
- 医院急诊科应急预案
- 家庭经济困难学生认定申请表
- 2024年管道燃气客服员(中级)技能鉴定考试复习题库(含答案)
- AQ 2047-2012 水泥工厂筒型储运库人工清库安全规程
- (新版)铁路机车车辆制动钳工(中级)职业鉴定考试题库(含答案)
- 人体艺术欣赏
- 压滤机安全操作规程
- 续新三国志英杰传攻略
- 毛主席长征故事
- 电梯维修完工验收表模板
- GB/T 29678-2013烫发剂
评论
0/150
提交评论