`
DigitalSonic
  • 浏览: 215211 次
社区版块
存档分类
最新评论

那些你该了解的Spring子项目

阅读更多

去年年底,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博士在接受采访时所表示的那样:

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

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

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的贡献者)做出了这样的解释:

Josh Long 写道
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中文站,地址为:http://www.infoq.com/cn/news/2013/01/spring-subprojects ,其实最近写的东西都是先发在InfoQ上,想过几天发博客,结果事情一多就忘了,就挑几篇自己感觉还行的集中搬一次吧。)

分享到:
评论

相关推荐

    基于spring cloud项目源码源码.rar

    《Spring Cloud项目源码深度解析》 在当前的微服务架构领域,Spring Cloud以其强大的功能和易用性,成为开发者构建分布式系统的重要选择。本文将深入探讨基于Spring Cloud的项目源码,帮助读者理解其核心原理,提升...

    一个spring项目

    - 探索Spring Boot,它是Spring的一个子项目,可以简化Spring应用的启动和配置。 这个"一个spring项目"应该是包含了这些基础知识的实现,通过分析和运行该项目,你可以更直观地理解Spring MVC的工作流程和实际应用...

    springcloud项目,解决unknown问题

    首先,让我们了解Spring Cloud和Spring Boot的核心概念。Spring Boot是一个用于简化Spring应用初始搭建以及开发过程的框架,它通过默认设置,让开发者可以快速启动项目,而无需过多的配置。Spring Cloud则是在Spring...

    springcloud练习项目代码

    9. **Spring Cloud Sleuth**:是Spring Cloud的一个子项目,用于在分布式系统中提供日志跟踪解决方案,常与Zipkin或ELK(ELasticsearch, Logstash, Kibana)结合使用,帮助定位系统中的性能瓶颈。 10. **Spring Cloud...

    springcloud电商项目

    - itmayiedu-shopp-parent:父项目,用于统一管理子项目的依赖。 - itmayiedu-shopp-common:公共工具类库。 - itmayiedu-shopp-eurekaserver:Eureka服务注册中心。 - itmayiedu-shopp-api:接口定义。 - ...

    eclipse项目spring实例

    5. **mySpring**:这个压缩包的文件名可能是项目的主要模块或者子目录,可能包含该项目的源代码、配置文件、资源文件等。在实际项目中,开发者通常会按照一定的组织结构来安排文件,例如,源代码放在src/main/java...

    初学spring项目(入门解读和新建项目)

    总之,"初学Spring项目(入门解读和新建项目)"这篇博文将引导你了解Spring框架的基本概念,学习如何使用Spring Initializr创建项目,并通过实际操作来熟悉Spring Boot的启动流程、MVC架构、数据库操作以及自动配置等...

    spring入门代码项目

    在这个章节,我们将了解Spring对JDBC的支持,包括DataSource的配置、JdbcTemplate和NamedParameterJdbcTemplate的使用。Spring JDBC模块提供了一种更方便的方式来处理数据库操作,减少了大量模板代码,提高了代码的...

    Spring cloud与Spring boot 集成完整案例

    - **eumji025**: 这可能是一个特定的模块或子项目,具体功能无法直接推断,但很可能包含了Spring Cloud和Spring Boot的某个具体实现,例如使用Eureka进行服务注册和发现,或者使用Hystrix实现熔断机制。 案例分析...

    适合新手入门的springcloud完整项目资源,附带sql和详细的开发文档,可直接导入运行。

    "springcloud_parent"这个文件名可能指的是项目的父级Maven模块,通常在大型项目中,会有一个父模块来统一管理子模块的依赖和版本,这样可以避免版本冲突并简化依赖管理。 3. **服务发现——Eureka** Eureka是...

    构建为eclipse项目的spring源码

    点击"Next",导航到解压后的Spring源码目录,选择顶级的pom.xml文件,Eclipse会自动识别并加载所有子项目。 3. **构建项目** 导入项目后,Eclipse会自动尝试构建整个Spring框架。如果遇到编译问题,可能需要检查...

    spring-framework-5.3.8

    9. **安全性**:Spring Security 是 Spring 社区的一个子项目,用于提供身份验证和授权功能。5.3.8 版本可能对安全相关的 API 进行了调整,以更好地适应现代 Web 应用的安全需求。 10. **国际化**:Spring 提供了对...

    spring揭秘 完整带标签

    《Spring揭秘》是一本深入解析Spring框架的权威指南,它以详实且易于理解的方式,逐步引领读者深入了解Spring的核心机制和使用技巧。本书旨在帮助读者避开繁琐的理论讲解,直接进入实战,从而快速掌握Spring的实际...

    SpringCloud基础教程

    首先,我们需要了解SpringCloud的基础架构,它由多个子项目组成,如Eureka(服务注册与发现)、Zuul(边缘服务/API网关)、Hystrix(断路器)、Feign(声明式客户端)等。这些组件共同构建了一个完整的微服务生态...

    Spring实战Chapter05 Spittr项目 IDEA工程

    `settings.gradle`文件则定义了项目结构,包括项目的根目录和子模块。在这个Spring项目中,它可能只包含一个默认的根项目,但如果有多个模块,这里会列出所有模块。 `.idea`目录包含了IDEA工作空间的所有设置和配置...

    spring cloud最佳实践项目

    Spring Cloud全家桶包含了众多子项目,如Eureka(服务注册与发现)、Zuul(API网关)、Hystrix(断路器)、Feign(声明式客户端)、Ribbon(客户端负载均衡器)等。这些组件协同工作,构建了一个高效、稳定的微服务...

    spring包扫描配置的项目

    通过这个简单的例子,你可以了解到Spring如何利用包扫描和注解来管理和组织应用程序的组件。这使得开发更加模块化,易于维护,同时也降低了配置的复杂性。当你深入学习和实践这个项目时,你会更好地理解Spring框架的...

    Spring Security 示例项目

    这个示例项目旨在为初学者提供一个基础的起点,让他们了解如何在Spring应用中集成和配置Spring Security。 **一、Spring Security核心概念** 1. **身份验证(Authentication)**: 这是确认用户身份的过程。Spring ...

    spring学习.zip

    通过这些资源,你可以全面了解Spring框架的核心组件,包括Spring Boot的便捷启动、Spring MVC的Web开发、Spring Data的数据访问,以及与MyBatis的集成。同时,还能掌握如何在企业环境中应用这些技术,提升你的开发...

    spring最新版本4.3.3所有jar包

    Spring 4.3.3是该框架的一个稳定版本,发布于2016年,虽然现在已经有了更高级的版本,但4.3.3仍然是许多项目中的常用选择。这个压缩包包含的是Spring框架4.3.3版本的所有核心和可选组件的jar包,对于理解和使用...

Global site tag (gtag.js) - Google Analytics