Spring_总结_01_Spring概述
一、前言
从今天开始,重新总结一下Spring的相关知识,主要是结合《Spring实战(第四版)》和 《JavaEE开发的颠覆者——SpringBoot实战》这两本书以及官方文档,同时加入自己的一点点点小小小理解,如有不当之处,还请指正。
二、Spring最根本的使命
Spring框架是一个轻量级的企业级开发的一站式解决方案,所谓解决方案就是可以基于Spring解决JavaEE开发的所有问题。
事实上,Spring也确实在不断朝这个方向努力,从官方上列出的Spring产品就可以看出,同时这也反映出 Spring最根本的使命:简化Java开发。
三、Spring框架的四大原则
为了简化Java开发,Spring框架所有功能的设计和实现都基于四大原则:
(1)使用POJO进行轻量级和最小侵入式开发
(2)通过依赖注入和基于接口编程实现松耦合
(3)通过AOP和默认习惯进行声明式编程
(4)使用AOP和模板(template)减少模式化代码
四、Spring 的六大模块
Spring是模块化的,这意味着你可以只使用你需要的 Spring 的模块。

图 1.1 Spring框架由6个定义良好的模块分类组成
1.核心容器(Core Container)
| 1 | Spring-Core | 核心工具类,Spring其他模块大量使用Spring-Core; |
| 2 | Spring-Bean | Spring定义Bean的支持; |
| 3 | Spring-Context | 运行时Spring容器; |
| 4 | Spring-Context-Support | Spring容器对第三方包的集成支持; |
| 5 | Spring-Expression | 使用表达式语言在运行时查询和操作对象。 |
2.AOP
| 1 | Spring-AOP | 基于代理的AOP支持 |
| 2 | Spring-Aspects | 基于AspectJ的AOP支持 |
3.消息(Messaging)
Spring-Messaging :对消息架构和协议的支持。
4.Web
| 1 | Spring-Web | 提供基础的Web集成的功能,在Web项目中提供Spring的容器。 |
| 2 | Spring-Webmvc | 提供基于Servlet的Spring MVC |
| 3 | Spring-WebSocket | 提供WebSocket |
| 4 | Spring-Webmvc-Portlet | 提供Portlet环境支持 |
4.数据访问/集成(Data Acess / Integration)
| 1 | Spring-JDBC | 提供以JDBC访问数据库的支持 |
| 2 | Spring-TX | 提供编程式和声明式的事务支持 |
| 3 | Spring-ORM | 提供对对象/关系映射技术的支持 |
| 4 | Spring-OXM | 提供对对象/XML映射技术的支持 |
| 5 | Spring-JMS | 提供对JMS的支持 |
五、Spring的生态
| 1 | Spring Boot | 使用默认开发配置来实现快速开发 |
| 2 | Spring XD | 用来简化大数据应用开发 |
| 3 | Spring Cloud | 为分部式系统开发提供工具集 |
| 4 | Spring Data | 对主流的关系型和NoSQL数据库的支持 |
| 5 | Spring Integration | 通过消息机制对企业集成模式(EIP)的支持 |
| 6 | Spring Batch | 简化及优化大量数据的批处理操作 |
| 7 | Spring Security | 通过认证和授权保护应用 |
| 8 | Spring HATEOAS | 基于HATEOAS原则简化了REST服务开发 |
| 9 | Spring Social | 与社交网络API(如Faceook、新浪微博、QQ等)的集成 |
| 10 | Spring AMQP | 对基于AMQP的消息的支持 |
| 11 | Spring Mobile | 提供对手机设备检测的功能,给不同的设备返回不同的页面的支持 |
| 12 | Spring for Android | 主要提供在Android上消费RESTful API的功能 |
| 13 | Spring Web Flow | 基于Spring MVC提供基于向导流程式的Web应用开发 |
| 14 | Spring Web Services | 提供了基于协议有限的SOAP/Web服务 |
| 15 | Spring LDAP | 简化使用LDAP开发 |
| 16 | Spring Session | 提供一个API及实现来管理用户会话信息 |
六、参考资料
1.《Spring实战(第四版)》
2.《JavaEE开发的颠覆者——SpringBoot实战》
Spring_总结_01_Spring概述的更多相关文章
- Spring_总结_02_依赖注入
一.前言 本文承接上一节:Spring_总结_01_Spring概述 在上一节中,我们了解了Spring的最根本使命.四大原则.六大模块以及Spring的生态. 这一节我们开始了解Spring的第二大 ...
- Spring_总结_04_高级配置(二)_条件注解@Conditional
一.前言 本文承接上一节:Spring_总结_04_高级配置(一)之Profile 在上一节,我们了解到 Profile 为不同环境下使用不同的配置提供了支持,那么Profile到底是如何实现的呢?其 ...
- Spring_总结_04_高级配置(一)_Profile
一.前言 本文承接上一节:Spring_总结_03_装配Bean(四)之导入与混合配置 这一节,来总结一下profile. 我们在开发软件时,通常会进行跨环境部署.而在跨环境部署时,经常会遇到某些环境 ...
- 【AR实验室】ARToolKit之概述篇
0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- .Net 大型分布式基础服务架构横向演变概述
一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
随机推荐
- MongoDB学习笔记—概念解析
Mongo基本概念 下表将帮助您更容易理解Mongo中的一些概念: SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table collection ...
- windows安装pywin32
下载旧版 https://sourceforge.net/projects/pywin32/files/pywin32/ 下载新版 https://github.com/mhammond/pywin3 ...
- 前端基础之Bootstrap介绍
bootstrap简介 http://v3.bootcss.com/ Bootstrap优点: 下载: Bootstrap引入 <meta name="viewport" ...
- JavaScript:学习笔记(2)——基本概念与数据类型
JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...
- springboot-vue项目后台1
- 【Topcoder】SRM158 DIV2总结
250分题:给定一个4位字符串initial和rotate这个字符串的方式,然后再给另一个字符串current,问current能否由initial通过rotate得到,需要几次rotate? 简单的 ...
- Cocos2d-x项目移植到WP8系列之五:播放MP3
原文链接: http://www.cnblogs.com/zouzf/p/3972549.html 这一块的细节还是不太了解,只是东凑西拼能跑起来而已 1.网上下载lamb库 生成需要的lib库,详情 ...
- 发现一个小坑的地方,unity的协程,想要停止,必须以字符串启动
今天想要停止一个协成,发现调用 StopCoroutine(ShowDebug()); 竟然不管用,后来看了文档才知道,原来想要停止协成,必须用字符启动协程 StartCoroutine(" ...
- Qt发布程序
一.作用 将Qt软件打包发布成绿色exe,在任意非Qt环境下运行 二.找到我们软件所依赖动态库 使用Qt的windeployqt.exe(在Qt安装目录的bin下面找)--! 1.新建文件夹,在里面放 ...
- strspn() 和 strcspn() 函数【转】
本文转载自:https://flyer103.wordpress.com/2011/06/03/strspn-%E5%92%8C-strcspn-%E5%87%BD%E6%95%B0/ 前几天在看一本 ...