1. 设计理念
Spring
为开发者提供一站式的轻量级应用开发框架
在Java EE的应用开发中,支持POJO
和使用JavaBean
的开发方式,使应用面向接口开发,充分支持OO
的设计方法
从设计上,Spring
分为核心,组件和应用三个基本的层次
核心:
Spring
的核心即IOC
容器和AOP
模块,通过IOC
来管理POJO
对象,以及他们之间的松耦合关系;AOP
以非侵入式的方法来增强服务(符合开闭原则)
组件:
在IOC
和AOP
两大核心模块的支持下,可以依据IOC
和AOP
约定好的模式,即可动态的扩展许多即开即用的系统组件和服务,比如事务处理,Web MVC
,JDBC
等
这部分组件提供了许多Java EE服务抽象,更体现了面向接口开发的设计理念
2. 整体架构
Core Container
包含了最基本的IOC
容器和BeanFactory
接口的与实现,比如XmlBeanFactory
除此之外还包含让应用方便使用IOC
的支持,比如Resource
访问资源的抽象和定位等
-
Spring-Core
包含了框架基本的核心工具类,其他组件都要使用到这个包中的类
定义并提供了资源的访问方式,为IOC
和DI
提供了最基础的服务 -
Spring-beans
Spring
主要面向Bean
编程
Spring把对象包装在Bean中达到对对象进行一系列的管理包括Bean
的定义,Bean
的解析,Bean
的创建等
其中的BeanFactory
很重要 -
spring-context
为Spring
提供运行时环境,保存对象的状态
扩展了BeanFactory
(ApplicationContext
等)
Spring-AOP
围绕着AOP的增强功能,Spring
集成了AspectJ
作为AOP
的一个特定实现,同时还在JVM
动态代理/CGLIB
的基础上实现了一个AOP
框作为Spring
集成其他模块的工具,比如声明式事务的TransactionPoxyFactoryBean
;
Spring MVC
Spring MVC
Spring JDBC/ORM
Spring层面在JDBC
规范的基础上进行了一层封装(JdbcTemplate
)简化数据库的操作;
还提供了对ORM
工具的封装,让应该更方便的使用ORM
框架
Spring 事务处理
Spring把企业开发中事务处理的主要过程抽象出来,并且简洁的使用AOP增强实现了声明式事务;
这些事务的处理的基本过程和具体事务处理器的实现是无关的,这里又一次体现了面向接口开发的设计理念;对于不同的事务处理机制(JDBC
,Hibernate
,JTA
)有对应的事务处理器(DataSourceTransactionManager,HibernateTransactionManager,JtaTransactionManager
)进行封装
Spring的远端调用
屏蔽了通讯的具体底层实现