01-第一天spring day01教案11能够知道解耦的演变过程_第1页
01-第一天spring day01教案11能够知道解耦的演变过程_第2页
01-第一天spring day01教案11能够知道解耦的演变过程_第3页
01-第一天spring day01教案11能够知道解耦的演变过程_第4页
01-第一天spring day01教案11能够知道解耦的演变过程_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Spring day01学习目标(1) 能够知道解耦的演变过程(2) 能够清晰描述出 IOC 相关思想(3) 能够搭建 spring 的开发环境(4) 能够使用 xml 的方式完成依赖注入配置学习指南spring 的概述程序的耦合及解耦IOC 概念和 spring 中的 IOC(重点)依赖注入(Dependency Injection)(重点)1 第一堂课本节知识点spring 概述spring 发展历程spring 的优势spring 的体系结构编写 jdbc 的工程代码用于分析程序的耦合编译期依赖本标能够说出 spring 框架的优点描述出 spring 框架的体系结构知道代码编译期的依赖

2、时间:30 分 52 秒1.1 spring 课程四天安排1.1.1知识概述介绍 spring 课程安排,4 天内容大概描述详情.3总结与补充spring 共四天第一天:spring 框架的概述以及 spring 中基于 XML 的 IOC 配置第二天:spring 中基于注解的 IOC 和 ioc 的案例第三天:spring 中的 aop 和基于 XML 以及注解的 AOP 配置第四天:spring 中的 JdbcTemlate 以及 Spring 事务控制1.1.4无1.1.5习题无1.2今日课程内容介绍1.2.1知识概述当日内容的课程内容概述详情.3总结与

3、补充1、spring 的概述spring 是什么spring 的两大spring 的发展历程和优势spring 体系结构2、程序的耦合及解耦曾经案例中问题工厂模式解耦3、IOC 概念和 spring 中的 IOCspring 中基于 XML 的 IOC 环境搭建4、依赖注入(Dependency Injection) 5、作业:1.2.4无1.2.5习题无1.3 spring 概述1.3.1知识概述Spring 框架的概述详情.3总结与补充spring 是什么?Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse

4、Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层SpringMVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架。1.3.4无1.3.5习题无1.4 spring 发展历程1.4.1知识概述Spring 框架的发展历史,及历史版本详情.3总结与补充Spring的发展历程1997 年 IBM 提出了 EJB 的思想1998 年,SUN 制定开发标准规范EJB1.01999

5、年,EJB1.12001 年,EJB2.02003 年,EJB2.12006 年,EJB3.0发布发布发布发布Rod Johnson ( spring 之父)Expert One-to-One J2EE Design and Development(2002) 阐述了 J2EE 使用 EJB 开发设计的优点及解决方案Expert One-to-One J2EE Development without EJB(2004)阐述了 J2EE 开发不使用 EJB 的解决方式(Spring 雏形)7 2017年 9 9月份发布了 g spring的最新版本 0 spring 5.0通用版(GA)1.4.

6、4无1.4.5习题无1.5 spring 的优势1.5.1知识概述Spring 框架的优势有哪些详情.3总结与补充spring的优势方便解耦,简化开发通过 Spring 提供的 IoC 容器,可以将对象间的依赖关系交由Spring 进行控制,避免硬编码所造成的过度程序耦合。用户也不必再为单例模式类、属性文件的需求编写代码,可以更专注于上层的应用。AOP 编程的支持等这些很底层通过 Spring 的AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松应付。式事务的支持可以将我们从单调烦闷的事务管理代码中解脱出来,通过管理,提高开发效率和

7、质量。方便程序的测试式方式灵活的进行事务的可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情。方便集成各种优秀框架Spring 可以降低各种框架的使用难度,提供了对各种优秀框架(Struts、Hibernate、Hessian、Quartz 等)的直接支持。降低 JavaEE API 的使用难度Spring 对 JavaEE API(如 JDBC、JavaMail、API 的使用难度大为降低。Java 源码是经典学习范例调用等)进行了薄薄的封装层,使这些Spring 的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对 Java 设计模式灵活运用以及对

8、 Java 技术的高深造诣。它的源代码无意是 Java 技术的最佳实践的范例。1.5.4无1.5.5习题无1.6 spring 的体系结构1.6.1知识概述看图讲解 spring 的体系结构详情.3总结与补充1.6.4无1.6.5习题无1.7 编写 jdbc 的工程代码用于分析程序的耦合1.7.1知识概述编写 jdbc 代码连接,分析代码中的耦合详情.3总结与补充1.7.4无1.7.5习题无1.8 编译期依赖1.8.1知识概述代码耦合中的编译器依赖分析详情.3总结与补充找不到依赖的情况下,是编译不过去的。存在耦合。1.8.4无1.8.5习题无2

9、第二堂课本节知识点2.1 程序的耦合和解耦的思路分析 12.2 曾经代码中的问题分析2.3 编写工厂类和配置文件2.4 工厂模式解耦本标能够清楚程序中的耦合及解决耦合的思路能够知道当前代码存在的问题能够知道为什么要创建工厂类来创建对象并编写工厂类中的代码时间:35 分 55 秒2.1 程序的耦合和解耦的思路分析 12.1.1知识概述讲解解耦合的思路详情.3总结与补充2.1.4Ø 解决耦合的思路?2.1.5习题第一步:使用反射来创建对象,而避免使用 new 关键字。第二步:通过配置文件来获取要创建的对象全限定类名2.2 曾经代码中的问题分析2.2.1知识概述分析直接依赖

10、 new 的问题详情.3总结与补充创建业务层接口和实现类创建持久层接口和实现类模拟表现层2.2.4无2.2.5习题无2.3 编写工厂类和配置文件2.3.1知识概述解决耦合第一步,编写工厂类及配置文件详情.3总结与补充创建 BeanFactory 类一个创建 Bean 对象的工厂Bean:在计算机英语中,有可重用组件的含义。JavaBean:用 java 语言编写的可重用组件。javabean >实体类它就是创建我们的 service 和 dao 对象的。第一个:需要一个配置文件来配置我们的 service 和 dao创建一个 perties

11、.5习题2.4 工厂模式解耦2.4.1知识概述创建工厂来解决代码中的耦合详情2.4.2配置的内容:唯一标识=全限定类名(key=value) 第二个:通过配置文件中配置的内容,反射创建对象配置文件可以是 xml 也可以是 properties2.4.3总结与补充BeanFactory.java 文件测试类:2.4.4无2.4.5习题无3 第三堂课本节知识点3.1 分析工厂模式中的问题并改造3.2 工厂模式解耦的升级版3.3 ioc 的概念和作用3.4 spring 中的 Ioc 前期准备本标能够清楚编写工厂类的作用能够清楚 IOC 解决的问题知道 spring 的版本,jdk

12、与 tomcat 的版本时间:25 分 55 秒3.1 分析工厂模式中的问题并改造3.1.1知识概述目前工厂存在的问题,进行改造详情.3总结与补充*特别注意:最后有代码错误并没有解决,直接结束了,在(14 工厂模式解耦的升级版.avi)中解决了代码错误,没有单独进行说明,关于总结,请看下个总结*3.1.4无3.1.5习题无3.2 工厂模式解耦的升级版3.2.1知识概述最终的工厂模式解耦的思路及代码实现详情.3总结与补充BeanFactory 代码public class BeanFactory /定义一个 Properties 对象private static

13、Properties props;/定义一个 Map,用于存放我们要创建的对象。我们把它称之为容器private static Map<String,Object> beans;/使用静态代码块为 Properties 对象赋值static try /实例化对象props = new Properties();/获取 properties 文件的流对象InputStreamin= BeanFactory.class.getClassLoader().getResourceAsStream("perties");props.load(in);/实例

14、化容器beans = new HashMap<String,Object>();/取出配置文件中所有的 Key Enumeration keys = props.keys();/遍历枚举while (keys.hasMoreElements()/取出每个 KeyString key = keys.nextElement().toString();/根据 key 获取 valueString beanPath = props.getProperty(key);/反射创建对象Object value = Class.forName(beanPath).newInstance();/把

15、key 和 value 存入容器中beans.put(key,value);catch(Exception e)throw new ExceptionInInitializerError("初始化 properties 失败!");/* 根据 bean 的名称获取对象* param beanName* return*/public static Object getBean(String beanName) return beans.get(beanName);/* 根据Bean 的名称获取 bean 对象* param beanName* returnpublic sta

16、tic Object getBean(String beanName) Object bean = null;try 测试代码:AccountServiceImpl 代码:测试代码:public class Client public static void main(String args) /IAccountService as = new AccountServiceImpl(); for(int i=0;i<5;i+) IAccountService as = (IAccountService) BeanFactory.getBean("accountService&q

17、uot;); System.out.println(as);as.saveAccount();/* 账户的业务层实现类*/public class AccountServiceImpl implements IAccountService /private IAccountDao accountDao = new AccountDaoImpl();private IAccountDao accountDao = (IAccountDao)BeanFactory.getBean("accountDao");/private int i = 1;public voidsaveA

18、ccount() int i = 1;accountDao.saveAccount(); System.out.println(i);i+;String beanPath = props.getProperty(beanName);/System.out.println(beanPath);bean = Class.forName(beanPath).newInstance();/每次都会调用默认构造函数创建对象catch (Exception e)e.printStackTrace();return bean;*/3.2.4无3.2.5习题无3.3 ioc 的概念和作用3.3.1知识概述描述

19、 ioc 的概念及解决的问题详情.3总结与补充3.3.4Ioc 的作用是什么?3.3.5习题削减计算机程序的耦合(解除我们代码中的依赖关系)。3.4 spring 基于 XML 的 IOC 环境搭建和入门3.4.1知识概述搭建 spring 开发的环境,及环境要求详情.3总结与补充案例的前期准备本章我们使用的案例是,账户的业务层和持久层的依赖关系解决。在开始spring 的配置之前,我们要先准备一下环境。由于我们是使用 spring 解决依赖关系,并不是真正的要做增删改查操作,所以此时我们没必要写实体类。并且我们在此处使用的是 java 工程,不是 java w

20、eb 工程。前期的准备: 官网:地址:解压:(Spring 目录结构:)* docs :API 和开发规范.* libs :jar 包和源码.* schema :约束.我们上课使用的版本是 是 spring5.0.2 。特别说明:spring5 版本是用 jdk8 编写的,所以要求我们的 jdk 版本是同时 tomcat 的版本要求 8.5 及以上。8 及以上。3.4.4无3.4.5习题无4 第四堂课本节知识点4.1 spring 基于 XML 的 IOC 环境搭建和入门4.2 ApplicationContext 的三个实现类4.3 BeanFactory 和 ApplicationCont

21、ext 的区别本标能够搭建 IOC 的环境,知道导入哪些 jar 包清晰知道实现类的具体功能,区别知道 BeanFactory 和 ApplicationContext 两个接口的区别时间:33 分 03 秒4.1 spring 基于 XML 的 IOC 环境搭建和入门4.1.1知识概述编写转账案例代码详情.3总结与补充创建业务层接口和实现类创建持久层接口和实现类导入依赖:创建 bean.xml 文件,让 spring 来管理两个对象的创建测试代码:4.1.4无4.1.5习题无4.2 ApplicationContext 的三个实现类4.2.1知识概述ClassPathXmlA

22、pplicationContext: FileSystemXmlApplicationContextAnnotationConfigApplicationContext三个实现类的讲解详情.3总结与补充ApplicationContext 的三个常用实现类:ClassPathXmlApplicationContext:它可以加载类路径下的配置文件,要求配置文件必须在类路径下。不在的话,加载不了。(更常用)FileSystemXmlApplicationContext:它可以加载磁盘任意路径下的配置文件(必须有权限)AnnotationConfigApplicationConte

23、xt:它是用于注解创建容器的,是明天的内容。4.2.4无4.2.5习题无4.3 BeanFactory 和 ApplicationContext 的区别4.3.1知识概述BeanFactory 和 ApplicationContext 的区别,代码测试区别详情.3总结与补充BeanFactory 和 和 ApplicationContext的区别BeanFactory 才是 Spring 容器中的顶层接口。ApplicationContext 是它的子接口。BeanFactory 和 ApplicationContext 的区别: 创建对象的时间点不一样。Application

24、Context:只要一配置文件,默认情况下就会创建对象。BeanFactory:什么使用什么时候创建对象。4.3.4无4.3.5习题无5 第五堂课本节知识点5.1 spring 中 bean 的细节之三种创建 Bean 对象的方式5.2 spring 中 bean 的细节之作用范围5.3 spring 中 bean 的细节之生命周期本标清楚 spring 实例化对象的三种方式能够描述 bean 的五种作用范围能够知道 bean 的单例和多例的生命周期时间:42 分 27 秒5.1 spring 中 bean 的细节之三种创建 Bean 对象的方式5.1.1知识概述Bean 的创建方式无参构造,

25、静态工厂,实例工厂详情.3总结与补充第式:使用默认无参构造函数<!-在默认情况下:它会根据默认无参构造函数来创建类对象。如果构造函数,将会创建失败。->bean 中没有默认无参<bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"/>5.1.4无5.1.5习题无5.2 spring 中 bean 的细节之作用范围5.2.1知识概述讲解 spring 中的 bean 的作用范围,scope 的值选择详情

26、.3总结与补充作用:用于配置对象让 spring 来创建的。默认情况下它调用的是类中的无参构造函数。如果没有无参构造函数则不能创建成功。属性:id:给对象在容器中提供一个唯一标识。用于获取对象。class:指定类的全限定类名。用于反射创建对象。默认情况下调用无参构造函数。scope:指定对象的作用范围。* singleton :默认值,单例的.* prototype :多例的.* request:WEB 项目中,Spring 创建一个* session:WEB 项目中,Spring 创建一个Bean 的对象,将对象存入到Bean 的对象,将对象存入到request 域中. session 域中

27、.* global session:WEB 项目中,应用在 Portlet 环境.如果没有 Portlet 环境那么globalSession 相当于 session.init-method:指定类中的初始化方法名称。destroy-method:指定类中销毁方法名称。5.2.4无5.2.5习题无5.3 spring 中 bean 的细节之生命周期5.3.1知识概述详细讲解 bean 单例和多例的生命周期详情.3总结与补充bean 对象的生命周期单例对象出生:当容器创建时对象出生活着:只要容器还在,对象一直活着:容器销毁,对象消亡总结:单例对象的生命周期和容器相同多例对象出生:当我们使用对象时 spring 框架为我们创建活着:对象只要是在使用过程中就一直活着。:当对象长时间不用,且没有别的对象器回收时,由 Java 的回收5.3.4无5.3.5习题无6 第六堂课本节知识点6.1 spring 的依赖注入6.2 构造函数注入6.3 构造函数注入6.4 set 方法注入6.5 注入集合数据6.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论