一、Spring架构简介
Spring的设计目标:为开发者提供个一站式的轻量级应用开发框架(平台)。就像操作系统负责存储、计算、通信、外围设备等物理资源的管理一样,Spring关系的是企业应用资源的使用,比如数据持久化、事务处理、消息中间件、web应用、分布式计算等技术的抽象。
1.Spring的层次划分
Spring体系的核心:IoC容器和AOP模块。通过IoC容器管理POJO对象及其依赖关系,通过AOP模块以动态和非侵入的方式来增强Spring的功能。
JavaEE各系统组件及服务:在IoC容器和AOP模块的支持下,Spring扩展了支持JavaEE开发的多个系统组件及服务,如:JDBC、ORM、Web MVC、事务处理等。
2.Spring的模块划分
Spring的基本组成模块有:Spring IoC、Spring AOP、Spring MVC、Spring JDBC/ORM、Spring事务处理、Spring远端调用、Spring应用。
3.Spring的一些特性
耦合性低:各个模块除了依赖IoC容器和AOP之外,相互之间并没有很强的耦合性;
非侵入性:使应用程序对框架的依赖最小,在没有框架时同样可以运行;
面向接口:Spring推动应用的设计风格向面向对象和接口编程转变。
可选择型:Spring只提供各种技术实现,不与单独技术绑定。
二、Spring IoC容器的设计与实现
两个容器系列:BeanFactory和ApplicationContext。
BeanFactory:实现容器最基本的功能;
ApplicationContext:在简单容器的基础上,增加面向框架的特性;
1.
Spring IoC容器的数据结构
BeanDefinition:对应java对象以及对象间的依赖关系,Spring将用户在XML文件或代码中定义的Bean,解析成对应的
BeanDefinition对象,并存储在HashMap中,key为Bean的name
HashMap:多个HashMap,分别用于存储
BeanDefinition和singlton Bean实例等