在Spring Boot中,要在application.yml
中读取pom.xml
中的属性,可以通过Maven的资源过滤功能实现。以下是具体配置步骤:
- 首先在
pom.xml
中定义属性并配置资源过滤:
<project>
<!-- 定义自定义属性 -->
<properties>
<app.version>1.0.0</app.version>
<app.name>my-springboot-app</app.name>
</properties>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 开启资源过滤 -->
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
- 然后在
application.yml
中使用@属性名@
的方式引用:
app:
# 引用pom.xml中定义的属性
version: @app.version@
name: @app.name@
# 也可以用于配置其他属性
full-description: "${app.name} version ${app.version}"
# 可以在任何地方使用这些属性
server:
port: 8080
servlet:
context-path: /${app.name}
- 如果需要在Java代码中使用这些属性,可以通过
@Value
注解注入:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AppInfo {
@Value("${app.version}")
private String appVersion;
@Value("${app.name}")
private String appName;
// getters and setters
}
工作原理:
- Maven在构建项目时,会对
src/main/resources
目录下的文件进行过滤 - 当
filtering
设置为true
时,Maven会将文件中@属性名@
格式的占位符替换为pom.xml
中定义的对应属性值 - 这样Spring Boot在启动时,就能读到替换后的实际值
注意:本文归作者所有,未经作者允许,不得转载