`
2277259257
  • 浏览: 497584 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring----各产品

 
阅读更多

 

Spring IO platform:

Spring起初只专注ioc和aop,现在已发展成一个庞大体系。比如security、mvc等。如此一来,不同模块或者与外部进行集成时,依赖处理 就需要各自对应版本号。比如,较新spring与较老的quartz,它们集成就会遇到问题,给搭建和升级带来不便。因此Spring IO Platform应运而生,只要项目中引入了它,外部集成时依赖关系无需版本号。官网的原文如下:“when you do declare a dependency on something that’s part of the Platform, you will now be able to omit the version number.”

Spring IO Platform只是一个pom文件,记录了spring与其他开源项目对应的版本。省去了版本号,也就省去了处理依赖时的问题,因为Spring IO Platform中有最优的版本配置。

当然SpringSource为了解决这些Jar冲突,推出了各种BOM,当然最著名的就是spring platform io bom,其中最核心的三个是:spring-framework-bom、spring-boot-dependencies、platform- bom。

对于Spring工程来说,直接在pom.xml文件中添加如下配置代码,即可免去管理版本冲突的难题

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>4.2.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.3.0.M2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>io.spring.platform</groupId>
            <artifactId>platform-bom</artifactId>
            <version>1.1.3.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

 

 Spring boot:

Spring的4.0版本可以说是一个重大的更新,其全面支持Java8,并且对Groovy语言也有良好的支持。另外引入了非常多的新项目,比如Spring boot,Spring Cloud,Spring WebSocket等。

Spring由于其繁琐的配置,一度被人成为“配置地狱”,各种XML、Annotation配置,让人眼花缭乱,而且如果出错了也很难找出原因。 Spring Boot项目就是为了解决配置繁琐的问题,最大化的实现convention over configuration(约定大于配置)。熟悉Ruby On Rails(ROR框架的程序员都知道,借助于ROR的脚手架工具只需简单的几步即可建立起一个Web应用程序。而Spring Boot就相当于Java平台上的ROR。

Spring Boot的特性有以下几条:

  • 创建独立Spring应用程序

  • 嵌入式Tomcat,Jetty容器,无需部署WAR包

  • 简化Maven及Gradle配置

  • 尽可能的自动化配置Spring

  • 直接植入产品环境下的实用功能,比如度量指标、健康检查及扩展配置等

  • 无需代码生成及XML配置

目前Spring Boot的版本为1.2.3,需要Java7及Spring Framework4.1.5以上的支持。如果想在Java6下使用它,需要一些额外的设置。

如果你想创建一个基于Spring的Web应用,只是简单的在页面中输出一个’Hello World’,按照之前的老方式,你需要创建以下文件:

  • web.xml : 配置使用Spring servlet,以及web其它配置;

  • spring-servlet.xml:配置Spring servlet的配置;

  • HelloController.java: controller。

如果你想运行它的话,需要将生成的WAR包部署到相应的Tomcat或者Jetty容器中才行,这也需要相应的配置。

如果使用Spring Boot的话,我们只需要创建HelloController.java。

 

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class HelloController {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(HelloController.class, args);
    }
}
 

然后借助于Spring Boot为Maven和Gradle提供的插件来生成Jar包以后直接运行java -jar即可,简单易用。

上面提过Spring Boot对Maven及Gradle等构建工具支持力度非常大。其内置一个’Starter POM’,对项目构建进行了高度封装,最大化简化项目构建的配置。另外对Maven和Gradle都有相应的插件,打包、运行无需编写额外的脚本。

Spring Boot不止对web应用程序做了简化,还提供一系列的依赖包来把其它一些工作做成开箱即用。下面列出了几个经典的Spring Boot依赖库。

  • spring-boot-starter-web:支持全栈web开发,里面包括了Tomcat和Spring-webmvc。

  • spring-boot-starter-mail:提供对javax.mail的支持.

  • spring-boot-starter-ws: 提供对Spring Web Services的支持

  • spring-boot-starter-test:提供对常用测试框架的支持,包括JUnit,Hamcrest以及Mockito等。

  • spring-boot-starter-actuator:支持产品环境下的一些功能,比如指标度量及监控等。

  • spring-boot-starter-jetty:支持jetty容器。

  • spring-boot-starter-log4j:引入默认的log框架(logback)

Spring Boot提供的starter比这个要多,详情请参阅文档:Starter POMs章节。

如果你不喜欢Maven或Gradle,Spring提供了CLI(Command Line Interface)来开发运行Spring应用程序。你可以使用它来运行Groovy脚本,甚至编写自定义命令。安装Spring CLI有多种方法,具体请看:安装Spring Boot Cli章节。

安装完毕以后可以运行 srping version来查看当前版本。

你可以使用Groovy编写一个Controller。

@RestController
class WebApplication {
    @RequestMapping("/")
    String home() {
        "Hello World!"
    }
}
 

然后使用spring run hello.groovy来直接运行它。访问localhost:8080即可看到打印的信息。

Spring Boot提供的功能还有很多,比如对MVC的支持、外部Properties的注入,日志框架的支持等。这里就不详述了。感兴趣的可以查看其文档来获取详细的信息。

如果你想在你的项目中使用Spring,那么最好把Spring Boot设为标配,因为它真的很方面开发,不过你也需要仔细阅读它的文档,避免不知不觉掉入坑中。

 

 

 Spring Framework:Spring的基础产品

 

 

Spring XD:(eXtreme Data,极限数据)是Pivotal的大数据产品。

它结合了Spring BootGrails, 组成Spring IO平台的执行部分。尽管Spring XD利用了大量现存的Spring项目,但它是一种运行时环境,而不是一个类库或者框架,它包含带有服务器的bin目录,你可以通过命令行启动并与之交 互。运行时可以运行在开发机上、客户端自己的服务器上、AWS EC2上或者Cloud Foundry上。

Spring XD中的关键组件是管理和容器服务器(Admin and Container Servers)。使用一种DSL,你可以把所需处理任务的描述通过HTTP提交给管理服务器。然后管理服务器会把处理的任务映射到处理模块(每个模块都是一个执行单元,作为Spring应用程序上下文实现)中。

进一步了解可点击:http://www.infoq.com/cn/articles/introducing-spring-xd

 

 Spring Data:持久层框架(类Hibernate,ibatis等)

 

 

Spring Cloud

 

 

Spring Integration:

实例 :http://blog.csdn.net/happyteafriends/article/details/8128290

应用介绍:http://blog.csdn.net/scorpio3k/article/details/6084387

作为Spring编程模型的扩展,Spring Integration提供了各种的配置选项,包括注解,支持命名空间的XML,通用bean元素的XML,当然也包括直接使用底层API。这些API基于定义好的策略接口和非侵略性的代理适配器

 Spring Integration主要有如下两个目标:
l  提供一个简单的模型来实现复杂的企业集成解决方案
l  为基于Spring的应用添加异步的、消息驱动的行为
l  让Spring用户可以直观的、增量的采用

Spring Integration基于两个原则:
l  组件应该松耦合,方便模型化和易测试
l  框架应该强制业务逻辑和集成逻辑的关注点分离
l  扩展点本质上应该是抽象的,而且限定在一个清晰的边界内,来促进可重用性和可移植性。

 

 

 Spring Batch:

Spring Batch 是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的批处理应用。Spring Batch是Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,使的已经使用 Spring 框架的开发者或者企业更容易访问和利用企业服务

Spring Batch 供了大量可重用的组件,包括了日志、追踪、事务、任务作业统计、任务重启、跳过、重复、资源管理。对于大数据量和高性能的批处理任务,Spring Batch 同样ﰁ供了高级功能和特性来支持,比如分区功能、远程功能。总之,通过 Spring Batch 能够支持简单的、复杂的和大数据量的批处理作业。Spring Batch 是一个批处理应用框架,不是调度框架,但需要和调度框架合作来构建完成的批处理任务。它只关注批处理任务相关的问题,如事务、并发、监控、执行等,并不ﰁ 供相应的调度功能。如果需要使用调用框架,在商业软件和开源软件中已经有很多优秀的企业级调度框架(如 Quartz、Tivoli、Control-M、Cron 等)可以使用。
 
Spring Security:
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
 
Spring hateoas:
SpringSocial 1.0给人们带来了一个通过一致的API连接社交服务的标准方法。该初始版本支持对Twitter、Facebook、GitHub与Trippit等社交服务的连接,并针对添加其他服务提供了SPI。
SpringSocial的目标是为那些面向社交的网站(那些与“状态”打交道,或者通过其他方式交换消息的社交服务)提供编程式的访问。它也可以被用来提供登录控制,从而允许用户通过他们的Facebook/Twitter帐号登录,而无需使用专门的身份验证方式。
由于大部分这些网站都支持OAuth认证方式,SpringSocial主要的应用场景是基于Web的应用程序,它可以执行必要的Web重定向,对网站用户 进行认证。例如,网上购物的应用程序可能允许用户使用他们的Facebook凭证进行登录,并允许他们向Facebook发布销售信息。
然而,并非所有的服务商都使用相同的OAuth机制。总共有三个版本的OAuth在被使用:1.0、1.0a以及2.0——而且,不同的服务商使用了不同的 风格。SpringSocial Core定义了一组SPI使得这些“方言”之间可以互相交流,而且对服务商Twitter、Facebook提供了内置支持,可以连接这些特定的服务。(OAuth 1.0和1.0a几乎完全相同,但后者修复了一个安全漏洞——除了网址,OAuth密钥还被用来签署原始域以及请求。)
SpringSocial 1.0提供了大量的快速启动文档与示例。SpringSocial 1.0要求Spring Core 3.0.5或者更高的版本,但建议是Spring Core 3.1。你可以直接下载,或者增加Maven的依赖,把它添加到项目里面。
 
Spring AMQP:
Spring AMQP项目将Spring核心概念应用到了基于AMQP的消息解决方案的开发上,并且提供了Java与.NET两个版本。要想了解Spring AMQP与AMQP,请阅读文章“Introduction to SpringSource's Advanced Message Queuing Protocol Support”。
Spring AMQP提供了org.springframework.amqp.core.AmqpTemplate来发送与接收消息。AMQP模板实现支持发送与接收POJOs而非javax.jms.Message实例。他们还提供了一种方式来自定义用于编排对象的MessageConverter。Spring与JMS用户会发现JmsTemplate与新的AmqpTemplate之间的相似性。
下面的代码片段介绍了如何联合使用Spring AMQP与RabbitMQ处理同步消息。
http://blog.csdn.net/ricohzhanglong/article/details/7236641
 
Spring Mobile:
Spring Mobile 是 Spring MVC 的扩展,用来简化手机上的Web应用开发,用于支持移动浏览的小框架,用起来很简单,和spring mvc结合也很方便
 
Spring for Android:
Spring Android 是 Spring 框架的扩展,用于简化 Android 本地应用程序的开发
 
Spring Web Flow:
Spring Web Flow (SWF) 是Spring Framework的一个脱离模块。这个模块是Spring Web应用开发模块栈的一部分,Spring Web包含Spring MVC。Spring Web Flow 的目标是成为管理Web应用页面流程的最佳方案。当你的应用需要复杂的导航控制,例如向导,在一个比较大的事务过程中去指导用户经过一连串的步骤的时候,SWF将会是一个功能强大的控制器
 
Spring Web Services:
 

Spring LDAP:
一般来说LDAP可以用来作为一个用户中心,围绕LDAP可以部署一些应用来共享相同的账号,这个在企业管理中是非常有帮助的,因为企业的内部应用可能是几个到几十个,员工如果有统一的账号密码,那将非常方便。
详细 :http://www.mzone.cc/article/621.html
 
Spring Session:
 
 
Spring Roo:
Spring Roo是针对 Java 技术的一个可扩展的、基于文本的开源 RAD 工具。它是用于创建和管理基于 Spring 的应用程序的一个强大资源
使用 Spring Roo,您可以添加和配置 JPA、Spring MVC、Spring Security 等功能,使用 Log4j 进行日志记录,测试 JUnit 和 Selenium、Solr、JMS、电子邮件等框架,仅需在 Roo shell 上输入命令即可。使用 Roo 添加这些功能节省的时间提高了开发人员的生产效率。Roo 不能编写业务逻辑,但可以管理应用程序的基础结构或配置。
Roo 是一个开发时间工具,这意味着应用程序在运行时独立于 Roo。由于 Roo 在运行时不存在,它没有任何性能或内存开销。这确保您不依赖于 Spring Roo,您只需几个按键即可随时从您的项目中删除 Roo
 
 
 
 

 
 
 
 
 
 
 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics