springboot源码分析1-springboot版本号获取

简介: 摘要:在使用springboot的时候,可能经常会忽略掉springboot的版本问题。本文我们看一下springboot jar包中定义的版本信息以及版本获取类。

摘要:在使用springboot的时候,可能经常会忽略掉springboot的版本问题。本文我们看一下springboot jar包中定义的版本信息以及版本获取类。本文内容相对而言比较简单。

1.java中定义项目的版本

回想一下在java中如何定义项目的版本。这个比较简单,只需要在jar包增加MANIFEST.MF文件(根目录)并添加的如下内容即可:

Manifest-Version: 1.0
Implementation-Title: 分享牛
Implementation-Version:
1.1

关于MANIFEST.MF文件的位置如下所示:

2.springboot中版本信息

同样,在springboot中spring-boot-2.0.0.M3.jar包中MANIFEST.MF定义了相关的版本信息,具体内容如下所示:
Manifest-Version: 1.0
Implementation-Title: Spring Boot
Implementation-Version: 2.0.0.M3
Built-By: bamboo
Specification-Vendor: Pivotal Software, Inc.
Specification-Title: Spring Boot
Implementation-Vendor-Id: org.springframework.boot
Created-By: Apache Maven 3.5.0
Build-Jdk: 1.8.0_121
Specification-Version: 2.0
Implementation-URL: http://projects.spring.io/spring-boot/
Implementation-Vendor: Pivotal Software, Inc.

3.springboot中版本信息的获取工具类

了解了上述的版本定义之后,我们就开始说明如何进行 MANIFEST.MF中定义的版本信息值的获取,可能聪明的小伙伴就想到了,直接读取MANIFEST.MF文件
并解析Implementation-Version属性不就可以了,当然可以使用这种方式,但是我们可以直接利用Springboot框架本身提供的一些的类进行操作了,这个类就是
SpringBootVersion类,该类的定义如下所示:

public final class SpringBootVersion {

	private SpringBootVersion() {
	}

	/**
	 * Return the full version string of the present Spring Boot codebase, or {@code null}
	 * if it cannot be determined.
	 * @return the version of Spring Boot or {@code null}
	 * @see Package#getImplementationVersion()
	 */
	public static String getVersion() {
		Package pkg = SpringBootVersion.class.getPackage();
		return (pkg != null ? pkg.getImplementationVersion() : null);
	}

}

当我们需要获取springboot中的版本,只需要调用SpringBootVersion类即可。
注意:SpringBootVersion类修饰符是final,所以我们不能定义子类去继承该类。

4.扩展点

SpringBootVersion类位于spring-boot-2.0.0.M3.jar包中,并且版本信息文件MANIFEST.MF位于spring-boot-2.0.0.M3.jar包中,那是不是我们就可以通过
spring-boot-2.0.0.M3.jar包中的任意一个类去获取版本信息呢?答案是肯定的。当然可以获取到的。实例代码如下:

public class SpringBootVersionTest {
	public static void main(String[] args) {
		String version = SpringBootVersion.getVersion();
		System.out.println(version);
		String implementationVersion = SpringApplication.class.getPackage().getImplementationVersion();
		
		System.out.println(implementationVersion);
	}
}

上述代码中,我们分别通过了 SpringBootVersion类以及SpringApplication类进行版本信息的获取。运行上述的代码,控制台输出的信息如下:

2.0.0.M3
2.0.0.M3


相关文章
|
2月前
|
druid Java Maven
|
2月前
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
1174 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
3月前
|
前端开发 Java Spring
【非降版本解决】高版本Spring boot Swagger 报错解决方案
【非降版本解决】高版本Spring boot Swagger 报错解决方案
108 2
|
2月前
|
Java Maven Spring
查看springboot版本支持最高的java版本
截至最近更新,Spring Boot 3.0及以上版本支持的最高Java版本为Java 17。鉴于技术的不断演进,建议直接参考Spring Boot的官方文档获取最准确的支持信息,因为这些版本兼容性可能会随着新版本的发布而有所变化。选择与你的Spring Boot版本相匹配的Java版本,可以确保充分利用框架特性,同时保证项目的稳定性和前瞻性。
96 0
|
4月前
|
JavaScript 前端开发 Java
SpringBoot + Vue 前端后分离项目精进版本
这篇文章详细介绍了一个基于SpringBoot + Vue的前后端分离项目的搭建过程,包括前端Vue项目的初始化、依赖安装、页面创建和路由配置,以及后端SpringBoot项目的依赖添加、配置文件修改、代码实现和跨域问题的解决,最后展示了项目运行效果。
SpringBoot + Vue 前端后分离项目精进版本
|
4月前
|
缓存 前端开发 JavaScript
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
这篇文章介绍了一个使用SpringBoot+Vue开发的前后端分离商城系统,包括技术架构、开发环境、实现的功能以及项目截图,并展示了普通用户和商家端的功能界面。
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
|
2月前
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
64 0
|
2月前
|
存储 自然语言处理 搜索推荐
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
45 0
|
4月前
|
Java API 开发者
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
154 0
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
|
4月前
|
Java
SpringBoot和SpringCloud对应版本
SpringBoot和SpringCloud对应版本
93 0