一. Spring 解决了什么问题
- Spring 核心功能是整合,提供一个管理组件的容器, 以 Bean的形式管理组件及对象。
- Spring 采用分层架构和组件化设计,允许分层,插件化选择组件。
二. Spring 整体架构
Spring4架构图
三. Spring 组件
1. core 层 -- Core Container :
基础层,核心功能 Bean--Context管理,由这一层提供,是Spring项目的基础依赖
spring-core
: Spring核心包,包含 IOC 和 DI 。spring-beans
: Bean包,核心是 BeanFactory,通过 IOC 将Bean的依赖与实际配置分离,实现Bean的动态注入。spring-context
:相当于注册表,维护了Bean的上下文信息,可以理解为Spring的IOC容器。
ApplicationContext
是上下文的Base接口。通过分析的父类,看看它具有哪些功能
public interface ApplicationContext extends
EnvironmentCapable, //读取环境信息
ListableBeanFactory, //读取当前容器Bean信息
HierarchicalBeanFactory, //读取父容器的Bean
MessageSource, //国际化接口
ApplicationEventPublisher, //事件发布接口
ResourcePatternResolver //资源解析
{
@Nullable
String getId();
String getApplicationName();
String getDisplayName();
long getStartupDate();
@Nullable
ApplicationContext getParent();
AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException;
}
spring-context-support
提供将第三方库集成到Spring-context
的支持,包括缓存,邮件,调度 和 模板引擎,如下图:
spring-expression
: EL支持,运行时灵活查询和操作对象
2. ext 层:
拓展层,提供额外的框架支持,按需选择引入
spring-aop
:基于动态代理的切面编程,通过定义切入点和切面,进行切面管理。spring-aspects
:与 AspectJ 集成,支持编译时织入、编译后织入、加载时织入。
3. DA 层 :
-
spring-jdbc
:JDBC的封装,简化jdbc操作。 -
spring-tx
:基于AOP的事务支持。 -
spring-orm
:Object/Relational mapping
API 。 -
spring-oxm
:Object/XML mapping
API。 -
spring-jms
:Java Messaging Service
Java消息服务API 。
4. WEB 层:
-
spring-web
:web应用集成包,提供基本的 web 远程服务支持 -
spring-webmvc
:也称Web-Servlet
,基于spring-web,是对 Servlet的增强
5. Test :
spring-test
: 支持Spring组件与JUnit或TestNG的单元测试和集成测试。它提供了Spring 的ApplicationContext
缓存,和可用于单独测试代码的模拟对象。