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

问题描述 投票:0回答:2

可以通过添加

${spring-boot.version}
将 Spring Boot 的版本包含在banner.txt中。

如何对

/info
执行器端点执行相同操作? 我尝试将以下两项添加到我的应用程序属性中,但没有成功:

/info
端点将打印“${spring-boot.version}”(或“@spring-boot.version@”),不解析占位符变量

我的下一个想法是为 Spring Boot 版本创建一个 Maven 属性,并像这样在父部分中引用它

<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());
    }
}
java spring-boot spring-boot-actuator
2个回答
0
投票

这应该有效:

<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>

那么您就不需要 app.info 属性。


0
投票

正如您在更新中提到的,可以使用

InfoContributor
根据
SpringBootVersion
中的值添加此属性:

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

这似乎是添加此细节的一种非常可靠的惯用方法。

© www.soinside.com 2019 - 2024. All rights reserved.