可以通过添加
${spring-boot.version}
将 Spring Boot 的版本包含在banner.txt中。
如何对
/info
执行器端点执行相同操作?
我尝试将以下两项添加到我的应用程序属性中,但没有成功:
info.app.spring-boot.version=${spring-boot.version}
[email protected]@
/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());
}
}
这应该有效:
<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 属性。
正如您在更新中提到的,可以使用
InfoContributor
根据 SpringBootVersion
中的值添加此属性:
@Component
public class SpringBootVersionInfoContributor implements InfoContributor {
@Override
public void contribute(Info.Builder builder) {
builder.withDetail("spring-boot.version", SpringBootVersion.getVersion());
}
}
这似乎是添加此细节的一种非常可靠的惯用方法。