【Spring Boot】读取property

假如要从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"
        }
    ]
}

文章作者: 叶遮沉阳
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 叶遮沉阳 !
  目录