创建Spring的主要目的是用来替代更加重量级的企业级Java技术,尤其是EJB.
相对于EJB来说,Spring提供了更加轻量级和简单的编程模型.它增强了简单老式Java对象(Plain Old Java object, POJO)的功能,
使其具备了之前只有EJB和其它企业级Java规范才具有的功能.
为了降低Java开发的复杂性,Spring采取了以下4种关键策略:
- 基于POJO的轻量级和最小侵入性编程.
- 通过依赖注入和面向接口实现松偶合.
- 基于切面和惯例进行声明式编程.
- 通过切面和模板减少样板式代码.
DI能够让相互协作的软件组件保持松散耦合,而面向切面编程(aspect-oriented programming,AOP)允许你把遍布应用各处的功能
分离出来形成可重用的组件.
除了DI,Spring对AOP的支持可以帮助应用将散落在各处的逻辑汇集于一处 ---- 切面. 当Spring 装配bean的时候,这些切面能够在
运行期编织起来,这样就能非常有效地赋予bean新的行为.
DI和AOP是Spring框架最核心的部分,因此只有理解了如何应用Spring最关键的功能,你才有能力使用Spring框架的其它功能.
Spring Portfolio (Spring开发的其它模块汇总) 中的项目简介: 可查阅 https://spring.io/projects
- Spring Web Flow
Spring Web Flow 建立于Spring MVC框架之上,它为基于流程的会话式Web应用(购物车或向导功能)提供了支持.
- Spring Web Service
虽然核心的Spring框架提供了将Spring bean以声明的方式发布为Web Service的功能,但是这些服务是基于一个具有争议性的架构(拙劣的契约后置模型)之上而构建的.
这些服务的契约由bean的接口来决定.Spring Web Service提供了契约优先的Web Service模型,服务的实现都是为了满足服务的契约而编写的.(...)
- Spring Security
安全对于许多应用都是一个非常关键的切面,利用Spring AOP, Spring Security为Spring应用提供了声明式的安全机制.
- Spring Integration
许多企业级应用都需要与其它应用进行交互, Spring Integration提供了多种通用应用集成模式的Spring声明式风格实现.
- Spring Batch
当我们需要对数据进行大量操作时,没有任何技术可以比批处理更胜任这种场景.如果需要开发一个批处理应用,你可以通过Spring Batch,使用Spring强大的面向POJO的编程模型.
- Spring Data
Spring Data使得在Spring中使用任何数据库都变得非常容易.尽管关系型数据库统治企业级应用多年,但是现代化的应用正在认识到并不是所有的数据都适合放在一张表中的行和列中.
一种新的数据库种类,通常被称之为NoSQL数据库,提供了使用数据的新方法,这些方法会比传统的关系型数据库更为合适.
不管是使用文档数据库,如MongoDB,图数据库,如Neo4j,还是传统的关系型数据库,Spring Data都为持久化提供了一种简单的编程模型.这包括为多种数据库类型提供了一种自动化的
Repository机制,它负责为你创建Repository的实现.
- Spring Social
关于社交网络的扩展模块.Spring Social更多的是关注连接(connect),而不是社交(social).它能够帮助你通过REST API连接Spring应用,其中有些Spring应用可能原本并没有任何社交方面
的功能目标.
- Spring Mobile
移动应用是另一个引人瞩目的软件开发领域.Spring Mobile是Spring MVC新的扩展模块,用于支持移动Web应用开发.
- Spring for Android
与Spring Mobile相关项目,旨在通过Spring框架为开发基于Android设备的本地应用提供某些简单的支持.最初,这个项目提供了Spring RestTemplate的一个可以用于Android应用之中的版本.
它还能与Spring Social协作,使得原生应用可以通过REST API进行社交网络的连接.
- Spring Boot
Spring极大地简化了众多的编程任务,减少甚至消除了很多样板式代码,如果没有Spring的话,在日常工作中你不得不编写这样的样板式代码.
Spring Boot是一个崭新的令人兴奋的项目,它以Spring的视角,致力于简化Spring自身.
Spring Boot大量依赖于自动配置技术,它能够消除大部分(在很多场景中,甚至是全部)Spring配置.它还提供了多个Starter项目,不管你使用Maven还是Gradle,这都能减少Spring工程构建文件的大小.
将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的大门即将被打开。