假如要从application.yml
中读取自定义属性,在Spring Boot
中该如何实现呢?
application:
name: 我的应用名称
version: 我的应用版本
1. @Value
通过@Value
可以轻松实现自定义属性的获取。
@Data
@Component
public class ApplicationProperty {
@Value("${application.name}")
private String name;
@Value("${application.version}")
private String version;
}
2. @ConfigurationProperties
使用@ConfigurationProperties
就不用每个属性配置@Value
了。
@Data
@Component
@ConfigurationProperties(prefix = "application")
public class ApplicationProperty {
private String name;
private String version;
}
3. spring-boot-configuration-processor
在IDEA
中可能提示Spring Boot configuration annotation processor not found in classpath
错误。
那么,需要添加spring-boot-configuration-processor
依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
4. additional-spring-configuration-metadata.json
在META-INF/additional-spring-configuration-metadata.json
中配置,
可以去除application.yml
中自定义配置的红线警告,
并且为自定义配置添加hint
提醒。
{
"properties": [
{
"name": "application.name",
"description": "Default value is artifactId in pom.xml.",
"type": "java.lang.String"
},
{
"name": "application.version",
"description": "Default value is version in pom.xml.",
"type": "java.lang.String"
}
]
}