02. Spring IOC 与容器的概念
Spring 框架的功能被有组织的分散到约 20 个模块中。这些模块分布在核心容器,数据访问/集成,Web,AOP(面向切面的编程),植入(Instrumentation),消息传输和测试,如下面的图所示。
核心容器模块
核心容器 由以下模块组成,spring-core, spring-beans,spring-context,spring-context-support,和spring-expression (Spring表达式语言)。
spring-core和spring-beans模块提供了框架的基础功能,包括IOC和依赖注入功能。 BeanFactory 是一个成熟的工厂模式的实现。你不再需要编程去实现单例模式,允许你把依赖关系的配置和描述从程序逻辑中解耦。
上下文(spring-context)模块建立在由Core和Beans模块提供的坚实的基础上:它提供一个框架式的对象访问方式,类似于一个 JNDI 注册表。上下文模块从 Beans 模块继承其功能,并添加支持国际化(使用,例如,资源集合),事件传播,资源负载,并且透明创建上下文,例如,Servlet容器。Context 模块还支持 Java EE 的功能,如 EJB,JMX 和基本的远程处理。 ApplicationContext 接口是 Context 模块的焦点。 spring-context-support 支持整合普通第三方库到Spring应用程序上下文,特别是用于高速缓存(ehcache,JCache)和调度(CommonJ,Quartz)的支持。
01. Spring 简介
Spring 框架简介
在 Java 近 20 年的历史中,它经历过很好的时代,也经历过饱受诟病的时代。尽管有很多粗糙的地方,如 applet、企业级JavaBean(Enterprise JavaBean,EJB)、Java 数据对象(Java Data Object,JDO)以及无数的日志框架,但是作为一个平台,Java 的历史是丰富多彩的,有很多的企业级软件都是基于这个平台构建的。Spring是 Java 历史中很重要的组成部分。
在诞生之初,创建 Spring 的主要目的是用来替代更加重量级的企业级 Java 技术,尤其是 EJB。相对于 EJB 来说,Spring 提供了更加轻量级和简单的编程模型。它增强了简单老式Java对象(PlainOldJavaobject,POJO)的功能,使其具备了之前只有EJB和其他企业级Java规范才具有的功能。
Spring 框架是一个 Java 平台,为开发 Java 应用程序提供全面的基础设施支持。 Spring 负责处理基础设施,这样您就可以专注于应用程序。
Spring 的发展历程
最初由 Rod Johnson 所创立的开发框架,用于简化企业级 Java 应用的开发。
在没有 Spring 之前, Java 企业级开发的状况:
- 依赖于老版本的 EJB;
- 严重依赖于应用服务器;
- 开发和调试非常困难。