一.模块分类
在maven中央仓库中查看spring4.0发布版本,包括了20个不同模块,类库如图所示,除了Log属于依赖外,这20个jar包基本涵盖了企业级应用所需的一切,除了核心容器外,你可以对这些模块有所选择,而不是一定要选择spring自带的集成模块
虽然模块众多,但总体来说是分为六种类型,如图所示
Spring核心容器
顾名思义,这个模块是spring最核心的部分,主要管理srping bean容器,包括bean工厂,应用上下文实现,除此之外还包含例如JNDI之类的企业服务,所有spring模块都构建于核心容器之上
Spring AOP模块
对面向切面编程提供支持,AOP可以帮助应用对象解耦
数据访问和集成
该模块主要包含
1.对JDBC模版代码进行抽取,简化数据访问层编程
2.对ROM框架进行集成,包括Hibernate、JPI(Java Persisternce API)、Java Data Object和Mybatis,spring的事务管理在致辞所有ORM框架以及JDBC
3.包含JMS(Java Message Service)上构件的spring抽象层,支持使用消息以异步异步的方式与其他应用集成
Web与远程调用
提供对Web应用的支持,包括集成一个强大的MVC框架,
除此以外还提供多种与其他应用交互的远程调用方案,集成了RMI(Remote Method invocation)、Hessian、Burlap、JAX-WS,同时自带一个远程调用框架HTTP invoker,不仅如此spring还提供暴露和使用REST API的良好支持
Instrumentation
为tomcat提供织入代理,为tomcat传递class文件,几乎很少应用
测试
提供对spring应用的测试
spring在该模块为JNDI、servlet、Portlet编写的单元测试提供一系列mock对象实现,对于集成测试,该模块为加载Spring应用上下文中提供bean集合、bean交互提供支持
二.生态简介
事实上只使用Spring自带的20个模块很可惜,Spring Protfolio库提供了构建在Spring框架之上的框架和类库,以下几种只是简介,详细介绍请关注链接官网,或关注后续本人博客
Spring Web Flow
建立与Spring MVC上的一款流程框架,基于会话式的Web应用(如向导功能),参考主页http://projects.spring.io/spring-webflow/
Spring Web Service
有别于servlet的一种web服务规范化API,具体内容可访问http://docs.spring.io/spring-ws/site/
Spring Security
Spring Security为Spring应用提供了声明式的安全机制,该服务依赖spring,访问http://projects.spring.io/spring-security/获取更多信息
Spring Integration
一个功能强大的EIP(Enterprise Integration Patterns),企业集成模式,网上搜索词条发现是一个与其他应用进行消息交互框架,
推荐访问http://projects.spring.io/spring-integration/
Spring Batch
对数据大量操作是,批处理应用,详细请访问http://projects.spring.io/spring-batch/
Spring Data
Spring Data使得数据库使用变得非常容易,尽管关系型数据库是目前企业应用主流,但不是所有数据都有必要放在一张表的行和列中,NoSQL数据库是存储使用数据的新选择
但不管使用文档数据库MongoDB,图数据库Neo4j还是传统数据库,Spring Data都为持久化提供了一种简单编程模型,包括为多种不同类型的数据库提供自动化Repository机制,可以为你创建Repository的实现
Spring Boot
Spring Boot应用一种约定优于配置的理念(也可以理解为规范优于配置),大量依赖自动配置技术,能够消除很多Spring的配置,并且还提供了多个Starter项目,不管使用Maven还是Gradle都能减少Spring工程构件文件的大小