支持 diff spring 版本的 SDK

SDK to support diff spring version

假设我打算开发一个SDK,而这个SDK应该支持不同的spring版本,例如spring 2.x, spring 3.x和spring4.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}不同的版本,但是这样会导致大量的维护成本。 对这个问题有什么想法吗?

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

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

如果您打算在所有 spring 版本中只使用少数 类 和具有相同签名的方法,我建议您查看 Understanding Maven Version Numbers 特别是table Table 7-1 版本范围参考。举个例子,当你看到版本 [1.2,1.3] 时,意味着 1.2 <= x <= 1.3。

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

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