Spring Boot 如何在/info执行器端点中获取Sping Boot 的版本

qq24tv8q  于 2023-02-16  发布在  Spring
关注(0)|答案(2)|浏览(136)

可以通过添加${spring-boot.version}在banner.txt中包含Spring Boot的版本。
如何对/info执行器端点执行相同的操作?我尝试将以下两个属性添加到应用程序属性中,但没有成功:

  • info.app.spring-boot.version=${spring-boot.version}
  • info.app.spring-boot.version=@spring-boot.version@

/info端点将打印"${spring-boot. version}"(或"@spring-boot. version@"),但不解析占位符变量
我的下一个想法是为SpringBoot版本创建一个Maven属性,并在parent部分引用它,如下所示

<properties>
    <spring.boot.version>1.5.3.RELEASE</spring.boot.version>
</properties>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>${spring.boot.version}</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

但是这并不起作用,因为Maven在处理<parent>部分之后解析占位符变量

更新

以下方法确实有效,但并不理想:

@Component
public class MyInfoContributor implements InfoContributor {
    @Override
    public void contribute(Info.Builder builder) {

        builder.withDetail("spring-boot.version", SpringBootVersion.getVersion());
    }
}
nhhxz33t

nhhxz33t1#

这应该行得通:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <additionalProperties>
      <spring-boot-version>${spring.boot.version}</spring-boot-version>
    </additionalProperties>
  </configuration>
</plugin>

这样就不需要www.example.com属性了。app.info properties.

kadbb459

kadbb4592#

正如您在更新中提到的,InfoContributor可用于基于SpringBootVersion中的值添加此属性:

@Component
public class SpringBootVersionInfoContributor implements InfoContributor {
    @Override
    public void contribute(Info.Builder builder) {
        builder.withDetail("spring-boot.version", SpringBootVersion.getVersion());
    }
}

这看起来是一种添加细节的非常可靠的惯用方法。

相关问题