• 1. Spring框架
  • 2. 课程目标Spring框架基础 Spring框架中的bean 了解spring中的面向切面编程 AOP Spring Struts Hibernate集成2
  • 3. 目标Spring框架描述 理解依赖注入(Dependency Injection)or 控制反转(Inversion of control) 3
  • 4. Spring框架概述 Spring AOPSpring ORMSpring WebSpring Web MVCSpring DAOSpring ContextSpring Core4
  • 5. Spring框架概述Spring所有组件都被集成在这7个模块当中 Core模块:这个模块包含核心容器和支持工具,为Spring框架提供了基本的功能,成为其他几个模块的基础功能模块。在Core模块中存在BeanFactory类,这个类是Spring框架的核心。BeanFactory实现了依赖注入,使得系统中各个组件的依赖关系从代码中独立出来,使用配制文件即可实现这种依赖关系。BeanFactory也是Spring框架的核心容器,因为BeanFactory实现了对系统中的对象的生命周期的管理。对Bean进行生平周期的管理5
  • 6. Spring框架概述Context模块:这个模块使Spring成为了框架,因为这个模块通过配置文件将各个组件组合在一起,使这些组件之间可以正常访问。其中,ApplicationContext类扩展了BeanFactory的功能,因此ApplicationContext类也可以称为Spring容器。此外,这个模块还提供了很多企业级的服务,如电子邮件,JNDI访问。远程调用等内容。6
  • 7. Spring框架概述 DAO模块:这个模块把JDBC代码中的一些内容抽象出来,简化了JDBC的编程,同时,这个模块还队数据库异常信息进行了处理,使得这些异常信息变得更容易理解。这个模块还包含了事务管理7
  • 8. Spring框架概述ORM模块:这个模块提供了对“对象/关系”影射框架的支持,使得这些框架可以插入到Spring框架中,从而扩展了Spring框架的功能 AOP模块:这个模块提供了面向切面编程的功能,通过 AOP模块可以将通用的功能插入到业务逻辑中,这些功能包括事务管理,安全管理等。8
  • 9. Spring框架概述Web模块:这个模块提供了Web应用所需的上下文,可与Struts等框架结合在一起使用。 Web MVC模块:这个模块实现了面向Web应用的MVC模式。模块利用依赖注入将控制部分和业务逻辑进行了清晰的分离9
  • 10. Spring框架概述从这些模块可以看出,Spring框架具有了Web应用所需的各种功能,而且具有很好的灵活性和扩展性,此外Spring框架可以应用于任何java EE容器中。正是游乐这些功能和特点,Spring 框架成为了目前流行的框架之一。10
  • 11. 理解依赖注入何谓控制反转(IoC = Inversion of Control),何谓依赖注入(DI = Dependency Injection)? IoC,就是由容器控制程序之间的关系,而非传统实现中由程序代码直接操控。这也 就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。 相对IoC 而言,“依赖注入”的确更加准确的描述了IoC。从名字上理解,所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。11
  • 12. 理解依赖注入12
  • 13. 理解依赖注入图中三个设备都有一个共同点,都支持USB 接口。当我们需要将数据复制到外围存储设备时,可以根据情况,选择是保存在U盘还是USB硬盘。 这个操作也正是所谓依赖注入的一个典型案例。 笔记本电脑与外围存储设备通过预先指定的一个接口(USB)相连,对于笔记本而言,只是将用户指定的数据发送到USB接口,而这些数据何去何从,则由当前接入的USB设备决定。在USB设备加载之前,笔记本不可能预料用户将在USB接口上接入何种设备,只有USB设备接入之后,这种设备之间的依赖关系才开始形成。13
  • 14. 定义一个接口实现这个接口并添加一个属性14
  • 15. 测试 运行结果15
  • 16. applicationContext.xmlapplicationContext.xml文件中的配制 对接口注入的是UpperDisplay这个类的实例,结果显示的信息为大写注意这个地方现在注入的是转变成大写的类16
  • 17. applicationContext.xmlapplicationContext.xml文件中的配制注意这个地方现在注入的是转变成小写的类运行结果为小写。17
  • 18. Spring中的Bean applicationContext.xml文件配制详解 在该文件中有许多Bean的定义。 Spring中的Bean可以是JavaBean,也可以是一般的Java对象。现在开始介绍这些Bean的概念和使用方法18
  • 19. Spring中的Bean applicationContext.xml文件中的配制说明 19
  • 20. 依赖注入的两种方式(1) apptech 45 设值注入,javaBean中有get 和set方法,在javaBean中可以利用这两种方法对Bean中的属性进行设置和读取.在Spring中通过元素在配置文件中进行设置,在运行过程中调用javaBean中的set方法给属性赋值20
  • 21. 依赖注入的两种方式(2) accp of apptech 88 通过构造函数进行注入,通过构造函数注入依赖关系通过元素来实现,对应构造函数中的参数,但是管理容器并不会区分参数的顺序和数据类型.通过type来指定数据类型,index来指定在构造函数中的参数位置21
  • 22. 比较(设值注入优势)1. 对于习惯了传统JavaBean开发的程序员而言,通过setter方法设定依赖关系显得更加直观,更加自然。 2. 如果依赖关系(或继承关系)较为复杂,那么构造函数注入将会相当庞大(我们需要在构造函数中设定所有依赖关系),此时设值模式往往更为简洁。 3. 对于某些第三方类库而言,可能要求我们的组件必须提供一个默认的构造函数(如Struts中的Action),此时构造函数类型的依赖注入机制就体现出其局限性,难以完成我们期望的功能。22
  • 23. 比较(构造函数注入优势)一次性将依赖关系全部注入,代码比较简洁 一次性将依赖关系全部注入,组件被创建后处于较为”稳定”的状态,不许要担心上层代码的依赖关系的破坏 一次性将依赖关系全部注入,Bean可以被立即实例化,立即使用 注入时顺序可以固定,因此对于要求依赖顺序的应用来说比较合适23
  • 24. ApplicationContext 功能 ApplicationContext提供了一个框架化的实现。ApplicationContext覆盖了BeanFactory的所有功能,并提供了更多的特性。此外, ApplicationContext为与现有应用框架相整合,提供了更为开放式的实现(如对于Web应用,我们可以在web.xml中对ApplicationContext进行配置)。相对BeanFactory而言,ApplicationContext提供了以下扩展功能24
  • 25. ApplicationContext 主要功能 国际化支持,我们可以在Bean定义文件中进行配置,对程序中的语言信息(如提示信息)进行定义,将程序中的提示信息抽取到配置文件中加以定义,为我们进行应用的各语言版本转换提供了极大的灵活性。 2. 资源访问,支持对文件和URL的访问。 3. 事件传播,事件传播特性为系统中状态改变时的检测提供了良好支持。 4. 多实例加载,可以在同一个应用中加载多个Context实例。25
  • 26. ApplicationContext接口实现 ApplicationContext接口位于org.springframework.context. ApplicationContext中,这个接口继承了BeanFactory,因此提供了BeanFactory的所有功能。 常用的2个实例 ClassPathXmlApplicationContext:利用类路径中的xml文件加载Bean定义的信息 FileSystemXmlApplicationContext:利用文件系统中的xml文件加载Bean定义的信息26
  • 27. 加载ApplicationContext容器 加载ApplicationContext容器可以通过编码方式加载也可以通过配置方法加载。如在Web应用中就可以采用配置方式加载该容器 通过编码方式加载 String path = "/WebRoot/WEB-INF/applicationContext.xml"; ApplicationContext ctx = new FileSystemXmlApplicationContext(path);27
  • 28. 加载ApplicationContext容器在web应用中通过配置方式加载 (1)Listener接口实现 org.springframework.web.context.ContextLoaderListener 28
  • 29. 加载ApplicationContext容器在web应用中通过配置方式加载 (2)Servelet接口实现 context org.springframework.web.context.ContextLoaderServlet 29
  • 30. AOP简介AOP(Aspect Oriented Programming)面向切面编程:就是将一些通用的功能或后加的功能从业务逻辑中分离出来,单独的对这些功能模块进行编译,然后在需要的地方诸如这些功能模块 切点(Pointcut)上面提到的通用的功能或后开发的功能独立于业务逻辑,属于应用中的一个层次或阶段,着就是切面(Aspect),注入这些功能的地方被成为连接点(Joinpoint)多哥连接点的集合就叫做切点30
  • 31. AOP简介目标对象(Target Object):连接点所在的对象就成为了目标对象. 通知(Advice):对新增功能的处理逻辑叫做通知. 通知的类型: 1、Around:在连接点前后分别执行需要增加的功能 2、Before:在连接点前需要增加的功能 3、After:在连接点后需要增加的功能 4、Throws:在连接点抛出异常是需要增加的功能31
  • 32. AOP简介package com.whj.sp; //网民接口 public interface Man { public void qq(); public void net(); }32
  • 33. AOP简介33
  • 34. AOP简介34
  • 35. AOP简介注入通知列表注入目标对象,也就是被代理的对象建立代理 Bea35
  • 36. AOP简介36
  • 37. Spring Hibernate整合 37
  • 38. Spring Hibernate整合 38
  • 39. Spring Hibernate整合 PROPAGATION_REQUIRED 39
  • 40. ssh整合注册监听器 org.springframework.web.context.ContextLoaderListener 40
  • 41. ssh整合 添加spring插件到Struts-config.xml中 41
  • 42. ssh整合 修改action中的type的值为 type="org.springframework.web.struts.DelegatingActionProxy">42
  • 43. ssh整合注意 Action中的path=“/aa”的值与applicationContext.xml文件中的对应与struts的设置中的相同43
  • 44. ssh整合注册监听器 org.springframework.web.context.ContextLoaderListener 44