Spring学习之IoC总结篇

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

  一般在Web应用中引入Spring的程序框架流程如下所示:

Spring学习之IoC总结篇

Spring模块框架图一览:

Spring学习之IoC总结篇

  关于IoC更详细资料请点击:Spring学习之第一个hello world程序,IoC为控制反转,也成为DI(依赖注入),为Spring的核心模块,另一个是AOP。

Spring中如何配置Hibernate事务

Struts2整合Spring方法及原理

基于 Spring 设计并实现 RESTful Web Services

Spring-3.2.4 + Quartz-2.2.0集成实例

使用 Spring 进行单元测试

运用Spring注解实现Netty服务器端UDP应用程序

Spring 3.x 企业应用开发实战 PDF完整高清扫描版+源代码

1 Spring中的Bean配置 1.1 IOC和DI

IOC(Inversion of Control):其思想是反转资源获取的方向. 传统的资源查找方式要求组件向容器发起请求查找资源. 作为回应, 容器适时的返回资源. 而应用了 IOC 之后, 则是容器主动地将资源推送给它所管理的组件, 组件所要做的仅是选择一种合适的方式来接受资源. 这种行为也被称为查找的被动形式

DI(Dependency Injection) — IOC 的另一种表述方式:即组件以一些预先定义好的方式(例如: setter 方法)接受来自如容器的资源注入. 相对于 IOC 而言,这种表述更直接

1.2 Spring容器

  在Spring IoC容器读取Bean配置创建Bean实例之前,必须对其实例化,只有在容器实例化后,才可以从IOC中获取Bean实例并使用它。

Spring提供了2种类型的IOC容器实现:

BeanFactory: IoC容器的基本实现

ApplicationContext: 提供了更多的高级功能,是BeanFactory的实现类

  BeanFactory是Spring框架的基石,主要被Spring自身程序调用;而ApplicationContext主要面向使用Spring的程序员,几乎所有的场合都可以直接使用ApplicationContext而非底层的BeanFactory。无论使用哪种方式,它们的配置文件是相同的。

如何在IOC容器中配置Bean?

  在xml文件中通过bean节点来配置Bean。

<bean> <constructor-arg value="string"/> </bean>

  id表示Bean名称,在IOC容器中需是唯一的,若id未指定,Spring自动将授权限定性名作为Bean的名字,若上图中Bean配置未设定id,则getBean()使用名字"java.lang.String"。id可以指定多个名字,名字之间可用逗号、分号、空号分割。

如何获取IOC容器中的Bean?

  从IOC容器中获取Bean实例有如下方法:

Spring学习之IoC总结篇

1.3 ApplicationContext

  ApplicationContext 的主要实现类有ClassPathXmlApplicationContext(从 类路径下加载配置文件)和FileSystemXmlApplicationContext( 从文件系统中加载配置文件),ApplicationContext 默认在初始化上下文时就实例化所有单例的Bean,注意Bean配置模式是单例的。

  ConfigurableApplicationContext 扩展于 ApplicationContext,新增加两个主要方法:refresh() 和 close(), 让 ApplicationContext 具有启动、刷新和关闭上下文的能力。

  WebApplicationContext 是专门为 WEB 应用而准备的,它允许从相对于 WEB 根目录的路径中完成初始化工作。

Spring学习之IoC总结篇

1.4 依赖注入的方式

  Spring支持3种依赖注入的方式:

属性注入

构造器注入

工厂方法注入(较少使用,不推荐)

属性注入

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/572671e7163c3a5dc3301feaa34a1b74.html