那些你该了解的Spring子项目

标签: spring 项目 | 发表时间:2013-01-18 23:22 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

去年年底, Spring Framework正式发布了3.2GA版本,距离3.1版的发布时间正好相隔一年,而距离最早的 Sprig Framework 1.0 Final发布也已8年有余。现在的Spring几乎成了Java项目中的“标配”,被运用于大大小小的系统之中。它出众的模块化特性让人们可以仅仅使用需要的部分,所以很多开发者往往只了解Spring核心框架中的IoC和AOP,有的还用了数据访问和MVC部分,而不关心其他内容,更不用提它的子项目了。

在首次SpringOne中国大会上,几位Spring开发团队的成员表示Spring核心框架的发布之所以间隔时间越来越大,正是因为越来越多的功能被放到了子项目中独立开发,所以这些子项目才变得愈发重要起来。比如,现在日益流行起来的Spring Batch、Spring Integration和Spring Data,正如 Mark Pollack博士在接受采访时所表示的那样:

我们一直在持续追踪Maven上的下载统计信息,这些项目的下载量都是呈指数级增长的。我最近没有关注,但我认为,Spring Integration和Spring Batch的流行程度比较接近。Spring Data JPA是最流行的项目,虽然NoSQL的讨论很热烈,但企业开发者还是在使用关系型数据库,所以对这个结果我们并未感到太吃惊。我们的MongoDB支持、Redis支持最近也越来越流行了,还有Neo4j,它们的成长曲线很漂亮,终会和Spring Integration和Spring Batch一样流行的。

虽然我们无法了解详细的下载统计数据,不过通过Google Trends,还是可以对这三个子项目 关注度的发展趋势有所了解:

3款子项目的发展趋势

Spring Data

Spring Framework中的数据访问模块对JDBC及ORM提供了很好的支持,随着NoSQL和BigData的兴起,出现了越来越多的新技术,比如非关系型数据库、MapReduce框架, Spring Data正是为了让Spring开发者能更方便地使用这些新技术而诞生的“大”项目——它由一系列小的项目组成,分别为不同的技术提供支持,例如Spring Data JPA、Sprng Data Hadoop、Spring Data MongoDB、Spring Data Redis等等。通过Spring Data, 开发者可以用Spring提供的相对一致的方式来访问位于不同类型的数据存储中的数据

除了新技术,Spring Data还为传统的关系型数据库提供了很多额外的支持,让开发者能够更好地利用关系型数据库,比如对Oracle RAC的支持。

Spring Batch

Spring Batch是一款专门针对企业级系统中的日常批处理任务的轻量级框架,能够帮助开发者方便地开发出强壮、高效的批处理应用程序。 瑞友科技IT应用研究院副院长池建强是这样介绍Spring Batch的

Spring Batch是一款优秀的、开源的大数据量并行处理框架。通过Spring Batch可以构建出轻量级的、健壮的并⾏处理应用,支 持事务、并发、流程、监控、纵向和横向扩展,提供统⼀的接口管理和任务管理。

Spring Batch对批处理任务进行了一定的抽象,它的架构可以大致分为三层,自上而下分别是业务逻辑层、批处理执行环境层和基础设施层。构建于Spring Framework之上,Spring Batch可以很好地利用Spring带来的各种便利,同时也为开发者提供了相对熟悉的开发体验。

很多人在了解了Spring Batch的流程控制和定义部分时,都会将其和工作流引擎混淆在一起。针对这个问题,Spring Batch的开发者Josh Long(他同时也是开源工作流引擎 Activiti的贡献者)做出了这样的解释:

Spring Batch更多地关注于大规模的批处理任务,例如,它提供了很多方法来读取大型的文件(比如1GB的CSV、XML文件),在数据库中加载或更新几万甚至几十万条记录。试想,一个对大规模批处理并不熟悉的开发者很可能会直接select出所有记录,以至于拖垮整个系统,而使用了Spring Batch,框架会帮助他每次捞取一部分记录进行分页,在更新时分批进行提交……

在处理大任务时,还可以根据需要,将任务拆成多个部分分配到不同的服务器上进行处理,随后再整合结果。其可扩展性和灵活性由此就已可见一斑了。

Spring Integration

在企业软件开发过程中,经常会遇到需要与外部系统集成的情况,这时可能会使用EJB、RMI、JMS等各种技术,也许你会引入ESB。如果你在开发时用了Spring Framework,那么不妨考虑 Spring Integration——它为Spring编程模型提供了一个支持 企业集成模式(Enterprise Integration Patterns)的扩展,在应用程序中提供轻量级的消息机制,可以通过声明式的适配器与外部系统进行集成。

Spring Integraton中有几个基本的概念——Message(带有元数据的Java对象)、Channel(传递消息的管道)和Message Endpoint(消息的处理端)。在处理端可以对消息进行转换、路由、过滤、拆分、聚合等操作;更重要的是可以使用Channel Adapter,这是应用程序与外界交互的地方,输入是Inbound、输出则是Outbound,可选的连接类型有很多,比如AMQP、JDBC、Web Services、FTP、JMS、XMPP、多种NoSQL数据库等等。只需通过简单的配置文件就能将所有这些东西串联在一起,实现复杂的集成工作。

Spring还有很多其他子项目,比如:

  • Spring Security(早期也叫Acegi),是较为成熟的子项目之一,是一款可定制化的身份验证和访问控制框架
  • Spring Roo,快速应用程序开发工具,可以在短时间内方便地生成应用程序
  • Spring Mobile,对Spring MVC的扩展,旨在简化移动Web应用的开发
  • Spring for Android,用于简化Android原生应用程序开发的Spring扩展

大家可以访问SpringSource的 项目页面或者它们的 GitHub了解更多信息。您使用过哪些Spring子项目呢,不妨也和大家分享一下吧。

丁雪丰 是InfoQ中文站编辑,满江红翻译组核心成员,出版过《Spring攻略》、《JRuby实战》等多部译著。主要关注领域:企业级应用、海量数据计算、动态语言应用等。

您可能也会喜欢

相关 [spring 项目] 推荐:

使用Spring Boot开发Web项目

- - ImportNew
前面两篇博客中我们简单介绍了spring Boot项目的创建、并且也带小伙伴们来DIY了一个Spring Boot自动配置功能,那么这些东西说到底最终还是要回归到Web上才能体现出它的更大的价值,so,今天我们就来看一下如何使用Spring Boot来开发Web项目. 当然,如果小伙伴对Spring Boot尚不熟悉的话,可以先参考一下这两篇博客:.

spring cloud项目改造为spring-cloud-kubernetes项目_水中加点糖-CSDN博客

- -
(一)基础k8s yaml脚本发布. (二)helm+shell脚本优化大量冗余配置发布. (三)jenkins用户审核的流水化方式部署. (四)service mesh(istio)服务网格化发布. (五)istio对项目进行金丝雀部署. spring-cloud-kubernetes之开发环境搭建.

使用maven一步一步构建spring mvc项目

- - CSDN博客架构设计推荐文章
1      使用eclipse构建maven web项目. 1.1新建Maven的web项目. 打开菜单File –New-MavenProject. 选择模板类型archtype——maven-archtype-webapp. 输入Group Id和artifact Id. Group Id一般填入项目名称,Artifact Id一般填入子项目的名称.

那些你该了解的Spring子项目

- - InfoQ cn
去年年底, Spring Framework正式发布了3.2GA版本,距离3.1版的发布时间正好相隔一年,而距离最早的 Sprig Framework 1.0 Final发布也已8年有余. 现在的Spring几乎成了Java项目中的“标配”,被运用于大大小小的系统之中. 它出众的模块化特性让人们可以仅仅使用需要的部分,所以很多开发者往往只了解Spring核心框架中的IoC和AOP,有的还用了数据访问和MVC部分,而不关心其他内容,更不用提它的子项目了.

Web项目中获取SpringBean——在非Spring组件中获取SpringBean

- - 编程语言 - ITeye博客
转自:http://www.cnblogs.com/Johness/archive/2012/12/25/2833010.html.  最近在做项目的时候我发现一个问题:Spring的IOC容器不能在Web中被引用(或者说不能被任意地引用). 我们在配置文件中让Spring自动装配,但并没有留住ApplicationContext的实例.

docker容器部署Spring Boot项目及更新

- - 编程语言 - ITeye博客
Docker这项容器技术已经是十分的火热了,读者要是不了解docker的话可以吧docker先理解为虚拟机. 我们的Springboot最终是要部署在Linux上的,docker作为Linux轻量级的实现. docker也是可以用来部署Springboot应用的. 1.创建Dockerfile . 创建一个文件名为Dockerfile的文件,复制以下内容到文件中.

为你 Spring Boot 项目自定义一个通用的异常

- - IT瘾-dev
本文出自《Springboot》专题系列. 我们的项目通常来讲都是一个比较大的项目,包含了各种各样的服务. 如果每个服务都以不同的方式返回异常信息,这样排查的时候就会比较凌乱. 如果我们定义一个标准的异常处理体系. 本文开发环境基于springboot2.4,IDE环境是IDEA. 逐步过渡到完全自定义自己的异常.

项目中单元测试容易出现的普遍问题归纳(Junit/Spring/Spring-test/Dubbo/RocketMQ/JAVA)

- - 编程语言 - ITeye博客
   最近公司要求项目在使用maven构建的时候不能跳过test的生命周期,也就是通过mvn test命令需要将整个项目运行起来. 因为之前项目组的成员都是在eclipse中去执行的unit test,在maven对所有模块构建的都是直接-Dmaven.test.skip=true的方式直接跳过UT的.

Spring Boot 项目启动时执行特定方法 - 坤哥的博客 - CSDN博客

- -
Springboot给我们提供了两种“开机启动”某些方法的方式:ApplicationRunner和CommandLineRunner. 这两种方法提供的目的是为了满足,在项目启动的时候立刻执行某些方法. 我们可以通过实现ApplicationRunner和CommandLineRunner,来实现,他们都是在SpringApplication 执行之后开始执行的.

使用istio对spring cloud kubernetes项目进行金丝雀发布_水中加点糖-CSDN博客_istio springcloud

- -
(一)基础k8s yaml脚本发布. (二)helm+shell脚本优化大量冗余配置发布. (三)jenkins用户审核的流水化方式部署. (四)service mesh(istio)服务网格化发布. (五)istio对项目进行金丝雀部署. spring-cloud-kubernetes之开发环境搭建.