




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter1 Spring入门*课程回顾*1 延迟加载2 抓取策略3 二级缓存与查询缓存 *教学导航*1 Spring介绍及基本概念2 IOC HelloWorld3 实现工厂模式的IOC容器1、 Spring介绍Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。spring是一个高度灵活的轻量级框架,其目的降低了程序的耦合度与复杂度。2003 由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。为什么要使用Spring可以解决什么问题1、管理对象、维护对象关系(IOC)spring提高了IOC容器,用来管理对象(创建、使用、回收),维护对象与对象之间的关系,从而大大的降低了对象与对象之间的耦合度,便于团队开发2、处理通用性业务(AOP)spring采用AOP编程思想,面向切面编程,可以把通用性的业务提取出来,切入到任何的面向对象节点3、整合其它框架spring提供了一系列第三方框架的整合,可以整合struts、hibernate、mybatis等框架降低框架与框架之间的耦合度,降低框架的使用难度以上是几个主要大点。下载地址 https:/repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework/spring/5.0.0.RELEASE最新版本下载地址Spring提供了一站式解决方案: 1、Spring Core spring的核心功能: IOC容器, 解决对象创建及依赖关系 2、Spring Web spring对web模块的支持。 - 可以与struts整合,让struts的action创建交给spring - spring mvc模式 3、Spring DAO spring 对jdbc操作的支持 【JdbcTemplate模板工具类】 4、Spring ORM spring对orm的支持: 既可以与hibernate整合,【session】 也可以使用spring的对hibernate操作的封装 5、Spring AOP 切面编程 6、SpringEE spring 对javaEE其他模块的支持#Spring IOC的概念和作用#IOCInversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制(用 new 生成对象)。通俗来说:IOC是一种开发模式(编程思想),用来管理对象(创建、使用、回收)与对象之间的关系,其实IOC就是面向对象的管理,解决了对象与对象之间的解耦,实现面向接口编程。Spring IOC 容器Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans,我们将在后面章节中进行讲解介绍。Spring 容器可以使用XML配置,我们称之为 Spring核心配置文件,也可以使用注解,新版本的Spring也可以零配置实现IOC。Spring容器在初始化时先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从IOC容器中取出需要的对象。DI(依赖注入)全称Dependency Injection,是实现IoC的一种方法,也有人认为DI只是IOC的另一种说法。对象与对象之间有依赖关系,通过配置文件注入到IOC容器中,依赖注入指的就是对象与对象之间的依赖关系。IOC和DI有什么关系呢?其实它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维 护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IOC 而言,“依赖注入”明确描述了“被注入对象依赖IOC容器配置依赖对象”。2、 Spring IOC 快速入门程序1、 创建javaWeb工程项目,导入Spring ioc依赖的jar包(参见SpringOne项目 以客户模块为例)注意:commons-logging-1.2.jar这个包是来自于apache的日志包。2、 编写DAO接口和实现类CustomerDao接口:/* * 客户模块 1、save() 保存 2、queryByAll() 查询所有客户信息 */public interface CustomerDao /* * 保存客户信息 */public void save();/* * 查询所有客户信息 */public void queryByAll();CustomerDaoImpl实现类:public class CustomerDaoImpl implements CustomerDao Overridepublic void save() System.out.println(把客户数据保存到mysql数据!);Overridepublic void queryByAll() System.out.println(从mysql数据库把客户数据全部查询出来!);3、 增加spring配置文件,applicationContext.xml4、 增加Service服务测试层,模拟服务层编写测试代码public class CustomerServiceImp /* * 保存客户信息 */Testpublic void save()/1.初始化SpringIOC容器ApplicationContext ac = new ClassPathXmlApplicationContext(applicationContext.xml);/2.从IOC容器取出对象CustomerDao customerDao = (CustomerDao)ac.getBean(customerDao); System.out.println(customerDao);/* * 查询所有客户信息 */Testpublic void queryByAll()/1.初始化SpringIOC容器ApplicationContext ac = new ClassPathXmlApplicationContext(applicationContext.xml);/2.从IOC容器取出对象CustomerDao customerDao = (CustomerDao)ac.getBean(customerDao); customerDao.queryByAll();5、 运行测试类的方法,结果为:注意:啥意思?Java中禁止的包名,不能以java为一级包名?怎么办?改名呀项目中所有的java一级包名的地方全部改成其它的比如com。再次运行显示结果:3、 工场模式设计IOC容器1、上例中增加oracle实现的数据实现类public class CustomerDaoImplOracle implements CustomerDao Overridepublic void save() System.out.println(把客户数据保存到oracle数据!);Overridepublic void queryByAll() System.out.println(从oracle数据库把客户数据全部查询出来!);2、 增加Service服务测试层,模拟传统服务层编写测试代码假设我们没有用spring 按普通方法应该怎么调用Dao实现类?新建CustomerServiceImpOraclepublic class CustomerServiceImpOracle /1.传统方法,直接new对象.private CustomerDao customerDao = new CustomerDaoImplOracle();/private CustomerDao customerDao = new CustomerDaoImpl(); /(弊端:耦合性太高,修改源代码难度有风险 有一百个地方调用呢?)/* 保存客户信息 */Testpublic void save()customerDao.save();3、 Spring IOC容器利用工厂设计模式,改造程序服务测试层变更spring配置文件(工厂的数据来源全部是配置文件)修改CustomerServiceImpOracle调用方法Testpublic void save()/spring 工作模式实现/1.初始化SpringIOC容器ApplicationContext ac = new ClassPathXmlApplicationContext(applicationContext.xml);/2.从IOC容器取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化创意产业隐名股东版权权益保护协议
- 2025年建筑工程类施工员市政-装饰参考题库含答案解析(5卷)
- 2025年学历类自考专业(电子商务)网页设计与制作-电子商务概论参考题库含答案解析(5卷)
- 2025年学历类自考专业(电子商务)电子商务与现代物流-计算机与网络技术基础参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)西方法律思想史-知识产权法参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)票据法-刑法学参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)婚姻家庭法-保险法参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)公司法-金融法参考题库含答案解析(5卷)
- 2025年学历类自考专业(工商企业管理)国际贸易理论与实务-国际贸易理论与实务参考题库含答案解析(5卷)
- 2025年学历类自考专业(国贸)国际技术贸易-基础英语参考题库含答案解析(5卷)
- 第八届全国职工职业技能大赛(网络和信息安全管理员)安徽选拔赛试题及答案
- 无人机装调检修工理论知识考试题及答案
- 湖北省2025届高三(9月)起点考试 语文试卷(含答案)
- 2024重庆机场集团公开招聘57人(高频重点提升专题训练)共500题附带答案详解
- JGJT384-2016 钻芯法检测混凝土强度技术规程
- 七年级英语阅读理解专项练习题及答案
- 食品化学全套教学课件
- 资金拆借合同通用范本
- 闽教版2023版3-6年级全8册英语单词表
- 女性领导的培养和使用
- 染料化学课件
评论
0/150
提交评论