支持 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>
假设我打算开发一个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>