- 创建Spring的主要目的是用来替代更加重量级的企业级Java技术,尤其是EJB(Enterprise JavaBean 企业级JavaBean)。相对于EJB来说,Spring提供了更加轻量级和简单的编程模型。它增强了简单老式Java对象(Plain Old Java Object, POJO)的功能,使其具备了之前只有EJB和其他企业级Java规范才具有的功能。
- Spring是为了解决企业级应用开发的复杂性而创建的。为了降低Java开发的复杂性,Spring采取了以下4中关键策略:
- 基于POJO的轻量级和最小侵入性编程
- 通过依赖注入和面向接口实现松耦合
- 基于切面和惯例进行声明式编程
- 通过切面和模板减少样版式代码
- 任何一个应用都会由两个或者更多的类组成,这些类相互之间进行协作来完成特定的业务逻辑。按照传统的做法,每个对象负责管理与自己相互协作的对象(即它所依赖的对象)的引用,这将导致高度耦合和难以测试的代码。
- 依赖注入DI带来的最大收益--松耦合,如果一个对象只通过接口(而不是具体实现或初始化过程)来表明依赖关系,那么这种依赖就能够在对象本身毫不知情的情况下,用不同的具体实现进行替换。
- Spring通过应用上下文(Application Context)装载bean的定义并把它们组装起来,Spring应用上下文全权负责对象的创建和组装。
- DI能够让相互协作的软件组件保持松散耦合,而面向切面编程(AOP)允许你把遍布应用各处的功能分离出来形成可重用的组件。
- 在基于Spring的应用中,应用对象生存于Spring容器中。Spring容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期。
- Spring自带了多个容器实现,可以归为两种不同的类型:
- bean工厂(由org.springframework.beans.factory.BeanFactory接口定义)是最简单的容器,提供基本的DI支持。
- 应用上下文(由org.springframework.context.ApplicationContext接口定义)基于BeanFactory构建,并提供应用框架级别的服务。应用上下文比bean工厂更受欢迎。
- Spring常用的应用上下文:
- bean的生命周期:
- Spring框架由6个定义良好的模块分类组成: