【问题标题】:SDK to support diff spring versionSDK 支持 diff spring 版本
【发布时间】:2016-08-25 08:10:19
【问题描述】:

假设我打算开发一个SDK,这个SDK应该支持不同的spring版本,例如spring 2.x,spring 3.x和spring 4.x,SDK中只有很少的依赖,

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

一种方法是设置 ${spring.version} 不同的版本,但这会导致大量的维护成本。 对这个问题有什么想法吗?

【问题讨论】:

  • @Blobonat 查看标题。

标签: java spring maven spring-mvc middleware


【解决方案1】:

如果您打算在所有 Spring 版本中使用具有相同签名的几个类和方法,我建议您查看Understanding Maven Version Numbers,特别是在表 表 7-1 版本范围参考。举个例子,当你看到版本 [1.2,1.3] 表示 1.2

对于您的情况,您必须将属性“spring.version”调整为:

<properties>
    <spring.version>[2.0,4.3]</spring.version>
</properties>

【讨论】:

  • @lawrence 我希望它对你有用,在我的测试中工作正常。顺便说一句,the common way of recognizing a good answer is upvoting it ;)
  • @Welliington Souza,我正在测试这个想法。这就是为什么我没有为这篇文章投票的原因。我会在测试后投票。
  • @Welliington Souza,经过测试,发现项目只获取最新版本的依赖,而且项目会下载所有版本范围之间的依赖。在不同的特定 spring 版本中使用时无法获取对应的版本。仍然不是解决此问题的好方法。
【解决方案2】:

首先,尽可能避免使用 Spring 依赖项;例如,通常只需要在 @Component 注释中包含 spring-context。假设您可以避免向前不兼容,只需针对最早兼容的 Spring 构建。例如,为 Spring 3.2 编译的组件通常会在 Spring 4.3 中正常加载。

但是,如果需要使用新 Spring 版本的功能,最好的方法是完全创建一个新工件。例如,当 Thymeleaf 需要使用仅在 Spring 4 中添加的功能时,it split into thymeleaf-spring3 and thymeleaf-spring4。这确实需要您付出更多努力,但会让所有用户的构建和过渡更加顺畅。

【讨论】:

  • 据我了解,我必须为不同的spring版本提供不同版本的SDK!对吗?
  • @lawrence 如果您的 SDK 与 Spring 版本不兼容(例如,使用已删除的弃用 API)。一些简单的东西可能会翻译成最少的问题。'
猜你喜欢
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
  • 2018-11-03
  • 2015-09-01
  • 2022-11-09
  • 2017-02-01
相关资源
最近更新 更多