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 Boot和Grails, 组成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 框架的开发者或者企业更容易访问和利用企业服务
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的依赖,把它添加到项目里面。