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学习之第一个hello world程序,IoC为控制反转,也成为DI(依赖注入),为Spring的核心模块,另一个是AOP。
基于 Spring 设计并实现 RESTful Web Services
Spring-3.2.4 + Quartz-2.2.0集成实例
Spring 3.x 企业应用开发实战 PDF完整高清扫描版+源代码
1 Spring中的Bean配置 1.1 IOC和DIIOC(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实例有如下方法:
1.3 ApplicationContextApplicationContext 的主要实现类有ClassPathXmlApplicationContext(从 类路径下加载配置文件)和FileSystemXmlApplicationContext( 从文件系统中加载配置文件),ApplicationContext 默认在初始化上下文时就实例化所有单例的Bean,注意Bean配置模式是单例的。
ConfigurableApplicationContext 扩展于 ApplicationContext,新增加两个主要方法:refresh() 和 close(), 让 ApplicationContext 具有启动、刷新和关闭上下文的能力。
WebApplicationContext 是专门为 WEB 应用而准备的,它允许从相对于 WEB 根目录的路径中完成初始化工作。
1.4 依赖注入的方式Spring支持3种依赖注入的方式:
属性注入
构造器注入
工厂方法注入(较少使用,不推荐)
属性注入