架构如下:
架构版本 | 架构图 |
Spring3结构图 |
|
Spring4结构图 | |
Spring5结构图 |
上面的ORM包含了hibernate和mybatis
也就是ssh组合和ssm组合中的h与m。
图中将spring分为5个部分:core、aop、data access、web、test,
图中每个圆角矩形都对应一个jar,如果在maven中配置,
所有这些jar的“groupId”都是“org.springframework”,每个jar有一个不同的“artifactId”,
另外,“instrumentation”有两个jar,还有一个“spring-context-support”图中没有列出,所以spring3的jar包一共是19个
-----------------------------------------------------------------------下面是spring3的大致整理-----------------------------------------------------------------------------------------------------------------------------------------
Core Container | spring-beans | Bean工厂与bean的装配 |
spring-core | 依赖注入IoC与DI的最基本实现 | |
spring-context | spring的context上下文即IoC容器 | |
spring-expression | spring表达式语言 | |
AOP | spring-aop | 面向切面编程 |
spring-aspects | 集成AspectJ | |
spring-instrument | 提供一些类级的工具支持和ClassLoader级的实现,用于服务器 | |
spring-instrument-tomcat | 针对tomcat的instrument实现 | |
Data Access | spring-jdbc | jdbc的支持 |
spring-tx | 事务控制 | |
spring-orm | 对象关系映射,集成orm框架 | |
spring-oxm | 对象xml映射 | |
spring-jms | java消息服务 | |
Web | spring-web | 基础web功能,如文件上传 |
spring-webmvc | mvc实现 | |
spring-webmvc-portlet | 基于portlet的mvc实现 | |
spring-struts | 与struts的集成,不推荐,spring4不再提供 | |
Test | spring-test | spring测试,提供junit与mock测试功能 |
spring-context-support | spring额外支持包,比如邮件服务、视图解析等 |
注意:
各大文章中,spring框架的
AOP、Aspects、Instrumentation常常被归为一类
关于servlet,摘录来自[9]的一段话:
Web MVC 框架基于 Servlet API,就会是一项优点。因为,虽然运用 Web MVC 编写程序时,可做到不直接面对 Servlet API,然而,也意味着更强烈地受到 Spring 的约束,有时则是无法在设定或 API 中找到对应方案,有时也因为心智模型还是挂在 Servlet 容器,经验上难以脱离,在搞不出 HttpSession、ServletContext 对应功能时,直接从 HttpSession、ServletContext 下手,毕竟也是个方法。
至于Spring web和web mvc的区别[10]:
web mvc主要是对mvc的支持,包括restful协议
Spring web则对远程调用和远程服务的支持。