版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第6章Spring框架基础
之控制反转2框架程序设计(Java)26.0学习目标DI配合接口编程4软件工程系本科课件框架程序设计java36.4DI配合接口编程回顾Spring的优点低侵入式设计,代码污染极低WriteOnce,RunAnywhereDI有效的降低了耦合度AOP提供了通用任务的集中管理ORM和DAO简化了对数据库访问高度开放性,并不强制对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、myBaits等,这样更便于应用的开发软件工程系本科课件框架程序设计java46.4DI配合接口编程例1:完成一个字母大小写转换的案例将字母转化为大写工具类:publicclassUpperLetter{ //将字母转化为大写 publicStringchange(Stringletter){ returnletter.toUpperCase(); }}软件工程系本科课件框架程序设计java56.4DI配合接口编程将字母转化为小写工具类:publicclassLowerLetter{ //将字母转化为小写 publicStringchange(Stringletter){ returnletter.toLowerCase(); }}现在用户希望将一串字母转化为大写,因此我们将UpperLetter类配置到Spring容器中,如下:<beanid="changeLetter"class="service.UpperLetter"></bean>软件工程系本科课件框架程序设计java66.4DI配合接口编程将一串字母转化为大写的代码如下所示:Stringletter="abCdRg";//初始化容器上下文ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");//从spring容器中获取bean,并强制转化为bean的实际类型UpperLetterservice=(UpperLetter)context.getBean("changeLetter");//调用方法Stringresult=service.change(letter);System.out.println(result);软件工程系本科课件框架程序设计java76.4DI配合接口编程某一天,用户的需求发生了改变,不需要转化为大写了,需要转化为小写:分为两步来解决1、修改bean的配置<beanid="changeLetter"class="service.LowerLetter"></bean>2、修改代码://从spring容器中获取bean,并强制转化为bean的实际类型LowerLetterservice=(LowerLetter)context.getBean("changeLetter");软件工程系本科课件框架程序设计java86.4DI配合接口编程以上的解决方案,既要修改spring的配置文件,又要修改代码,原因就是在我们的main方法中,与具体的字母大小写转换类产生了强耦合(也就是直接关联)思考一下:如何解除这种强耦合呢?main函数LowerLetterUpperLetter直接关联main函数LowerLetterUpperLetterChangeLetter接口软件工程系本科课件框架程序设计java96.4DI配合接口编程具体在代码中如何进行解耦呢?分为如下步骤:1、创建一个接口ChangeLetterpublicinterfaceChangeLetter{ //将字母进行大小写转换 publicStringchange(Stringletter);}2、将UpperLetter和LowerLetter分别实现这个接口3、代码修改如下://从spring容器中获取bean,并强制转化为bean的实际类型ChangeLetterservice=(ChangeLetter)context.getBean("changeLetter");如上处理之后,无论用户再怎么变化需求,都不用修改代码,只需修改配置文件即可,完成解耦软件工程系本科课件框架程序设计java106.4DI配合接口编程以上例子就是DI配合接口编程的一个简单的例子,从这个例子中我们可以看出“DI有效的降低了耦合度”Spring框架提倡面向接口编程,也就是在层与层之间定义接口,可以解除层与层之间的强耦合。软件工程系本科课件框架程序设计java116.4DI配合接口编程例2:实现在项目中方便切换数据库案例fang在一个项目中有一个dao包,其中有一个数据访问类如下:publicclassStudentMysqlDao{ publicvoidinsertStudent(){ System.out.println("向mysql数据库中成功插入一个学生"); }}软件工程系本科课件框架程序设计java126.4DI配合接口编程还有一个service包,其中有一个业务逻辑类如下:publicclassStudentService{ privateStudentMysqlDaodao;
//省略get/set方法 publicvoidinsert(){ this.dao.insertStudent(); }}软件工程系本科课件框架程序设计java136.4DI配合接口编程将StudentService配置到Spring中,配置如下:<beanclass="dao.StudentMysqlDao"id="studentDao"></bean><beanclass="service.StudentService"id="studentService"> <propertyname="dao"ref="studentDao"> </property></bean>软件工程系本科课件框架程序设计java146.4DI配合接口编程在测试类中调用StudentService完成插入一个学生:ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");StudentServiceservice=(StudentService)context.getBean("studentService"); //调用方法service.insert();现在用户突然放弃使用mysql数据库,要将所有操作移植到oracle数据库,该怎么做呢?软件工程系本科课件框架程序设计java156.4DI配合接口编程解决方案1:直接修改dao层不可取,有可能用户又切换到mysql解决方案2:创建一个StudentOracleDao,同时要修改配置文件和我们的StudentService,修改量巨大,因此也不可取解决方案3:1、将service与具体的dao实现类解耦,在service层和dao层之间定义一个接口(StudentDao),代码如下:软件工程系本科课件框架程序设计java166.4DI配合接口编程publicinterfaceStudentDao{ publicvoidinsertStudent();}2:让StudentOracleDao与StudentMysqlDao同时继承该接口3:解除StudentService与具体dao实现类的耦合,让StudentService直接使用接口StudentDao,如下:软件工程系本科课件框架程序设计java176.4DI配合接口编程publiccla
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津市河北区2023-2024学年八年级下学期期末考试语文试题(无答案)
- 【名师一号】2020-2021学年新课标版物理选修3-1-第一章静电场双基限时练8
- 山东省日照市实验中学2024-2025学年七年级上学期 历史期末试题(含答案)
- 五年级上册语文期末模拟试题及答案
- 【红对勾】2020年高中化学(人教版-必修二)-第3章-第4节-课时作业23
- 【优教通】2021年高一生物同步练习:4.1.2-酶作用特性及其影响因素(苏教版必修1)-
- 上海市各区2021届高三英语一模试卷分类汇编:写作专题
- 《瑜伽健身》课件
- 2022法律知识竞赛参考题库300题(含答案)
- 【先学后教新思路】2020高考物理一轮复习-教案4-运动的描述
- 咽喉癌病历书写
- 2023年自然资源部所属事业单位招聘(208人)笔试参考题库(共500题)答案详解版
- 自身免疫性肝炎诊断和治疗指南(2021版)解读
- 浅析小班幼儿角色游戏的年龄特点及游戏指导
- 全州疫苗接种与免疫规划培训班讲话稿
- 诗化小说示范课
- 有机合成化学3-基团的保护与基团的反应性转换
- 康复医学治疗技术(士)《基础知识》测试题(含答案)
- 学校未成年人保护和预防犯罪工作实施方案
- GB/T 41968-2022乳化废液处理处置方法
- 心内科住院医师规培出科考试9
评论
0/150
提交评论