为什么要用Spring IO Platform

今天无意间看到了一个关键词:”Spring IO Platform”,第一直觉是不是有关于IO方面的框架或者包呢,查了一下,居然是为了解决包冲突而生的。做了半年Java Web开发,经常遇到问题,编译没有报错,启动时报一些奇奇怪怪的问题,90%的都是包冲突导致的,虽然有一些包冲突解决插件,比如”Dependency Analyzer”等,也能很容易解决,但是如果能防范于未然,那是多么美好的一件事情。

好了,废话不多说了,简单介绍一下这个包吧。

什么是Spring IO Platform

Spring IO Plat是一个附带包,不会编译到项目中,它只是将核心Spring API框架内聚集成到一个现代应用程序的平台中。它提供了已经测试完毕能很好协同工作的许多项目的Spring组合版本以及它们的依赖项。

举个例子说,如果你的包引入了spring-boot-starter-web和spring-boot-starter-test这两个包,不用手动填写包的版本,Spring IO Plat会下载这两个包最适合的版本下来,避免因为版本的问题,导致的这样那样的问题。

Maven使用Spring IO Platform

我平时用的是Maven来继承依赖包,所以这里介绍一下Maven怎么使用这个包,有两种使用方式,一种是直接在依赖里引入Spring IO Platform,另外一种方式通过依赖继承Spring IO Platform。

依赖管理引入Spring IO Platform

    <dependencyManagement>
<dependencies>
<dependency>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>1.1.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

注意type和scope标签。

看下下载的包版本:


对比一下maven库里的版本,发现它拉下来的不是最新的版本,而是它认为合适的版本。

当然我们也可以指定依赖的包版本,会优先下载依赖的包版本的。

继承方式引入

    <parent>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>1.1.2.RELEASE</version>
<relativePath/>
</parent> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

同样可以做到。

不过官方推荐前者。

不只是依赖包,插件也是可以用这种方式确定和依赖想匹配的组合的,比如Spring Boot的Maven插件,我们可以利用这个特性,在代码块中添加如下代码即可使用合适版本的插件:

    <plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>

Spring IO Platform介绍的更多相关文章

  1. Spring IO Platform简介及示例

    什么是Spring IO Platform Spring IO Platform,简单的可以认为是一个依赖维护平台,该平台将相关依赖汇聚到一起,针对每个依赖,都提供了一个版本号: 这些版本对应的依赖都 ...

  2. Spring IO Platform 解决Spring项目组合中版本依赖

    简介: Spring IO Platform是Spring官网中排第一位的项目.它将Spring的核心API集成到一个适用于现代应用程序的平台中.提供了Spring项目组合中的版本依赖.这些依赖关系是 ...

  3. 解决jar包依赖:Spring IO platform推出bom

    名词解释: BOM(bill of materials):材料清单,用于解决jar包依赖的好方法. Spring IO Platform 缘起:Spring起初只专注ioc和aop,现在已发展成一个庞 ...

  4. Spring IO platform 简介

    前提:熟悉Spring基础知识. 简介:Spring IO Platform将 the core Spring APIs 集成到一个Platform中.它提供了Spring portfolio中的大量 ...

  5. 最新spring官网(spring.io)下载方法

    这里介绍的是用于WEB开发的spring-frame框架的下载方法. 如果想下载其他的spring产品,直接进入http://projects.spring.io,选择自己要的即可.下载方法同下. 要 ...

  6. springboot入门神器 -http://start.spring.io/(在线项目构建)

    参考并直接引用:http://www.sousou.io/article/1506656459859 最近在学习spring boot,看的书是<JavaEE开发的颠覆者 Spring Boot ...

  7. Spring开发包介绍

    -----------------siwuxie095                         核心开发包         建立 Spring 工程时,需要引入 Spring 的开发包,否则无 ...

  8. Spring Shell入门介绍

    目录 Spring Shell是什么 入门实践 基础配置 简单示例 注解@ShellMethod 注解@ShellOption 自定义参数名称 设置参数默认值 为一个参数传递多个值 对布尔参数的特殊处 ...

  9. Spring Data JPA介绍与简单案例

    一.Spring Data JPA介绍 可以理解为JPA规范的再次封装抽象,底层还是使用了Hibernate的JPA技术实现,引用JPQL(Java Persistence Query Languag ...

随机推荐

  1. React中使用UEditor

    一般UEditor用于表单的新建和编辑 <FormItem {...formItemLayout} label='商品详情'> {getFieldDecorator('detail', { ...

  2. UVALive-3989 Ladies' Choice (稳定婚姻问题)

    题目大意:稳定婚姻问题.... 题目分析:模板题. 代码如下: # include<iostream> # include<cstdio> # include<queue ...

  3. sqlplus环境设置

    1.0 --column 命令集                         改变列格式                {                column column_name1 f ...

  4. bzoj3901

    题解: 就是按照常规的合并 期望有一点麻烦 首先计算全部的和 再减去有多少种 具体看看http://blog.csdn.net/PoPoQQQ/article/category/2542261这个博客 ...

  5. 两种Service如何一起使用

    1.先是调用startservice来开启服务,并在且在后台一起运行. 2.在调用bindservice,获取中间对象. 3.unbindservice解绑服务. 4.最后在调用stopservice ...

  6. BZOJ3195: [Jxoi2012]奇怪的道路【状压DP】

    Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有n座城市,编号为1..n.m条道路连接在这些城市之间,每 ...

  7. 每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1

    每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1 -b 12.0:分支 12.0 --depth 1:depth 克隆深度,1 为最 ...

  8. 【转】嵌入式Linux文件系统启动脚本及分析

    原文网址:http://www.linuxidc.com/Linux/2011-03/33728.htm 在内核初始化完成后,嵌入式linux 文件系统的启动过程主要包含以下几个步骤: 1. 执行/s ...

  9. socket测试远程地址能否连接并为连接设置超时(转)

    public   class TestConnect { string hostIp = ""; int port = 3314; public string recMsg = & ...

  10. java 方法(函数)

    所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.p ...