当前位置 熊猫博客 JAVA 正文 下一篇:

Spring Boot配置文件总结

spring boot为我们提供了不同环境加载不同配置文件的方式,提供了使用@Value或者前缀来加载配置文件的方式,这里做一下总结。

准备数据

application-dev.yml

com:
  venustech:
    name: 天镜脆弱性扫描与管理系统(开发版)
    version: 1.2.3
    desc: ${com.venustech.name}是启明星辰自主研发的漏洞扫描产品,基于网络的脆弱性分析、评估与管理系统。提供对主机、操作系统以及网络设备的脆弱性检查、评估与管理。版本是${com.venustech.version}

application-prod.yml

com:
  venustech:
    name: 天镜脆弱性扫描与管理系统(正式版)
    version: 1.2.3
    desc: ${com.venustech.name}是启明星辰自主研发的漏洞扫描产品,基于网络的脆弱性分析、评估与管理系统。提供对主机、操作系统以及网络设备的脆弱性检查、评估与管理。版本是${com.venustech.version}

在yml或者properties文件中,均可使用${key}来引用

在application.yml中激活指定环境的配置:

spring:
  profiles:
    active: dev

使用@Value注解方式

getter和setter是必不可少的,spring boot依据set注入value,getter则供外部读取。

package com.venustech.platform.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class VenusTechConfig {
    @Value("${com.venustech.name}")
    private String name;
    @Value("${com.venustech.version}")
    private String version;
    @Value("${com.venustech.desc}")
    private String desc;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    @Override
    public String toString() {
        return "VenusTechConfig{" +
                "name='" + name + '\'' +
                ", version='" + version + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

使用@ConfigurationProperties

这种方式不需要给每个字段指定@Value注解,只需要保证字段名称和配置文件保持一致即可。使用此注解需要引入spring-boot-configuration-processor

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
package com.venustech.platform.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "com.venustech")
public class VenusTechConfig2 {
    private String name;
    private String version;
    private String desc;

    @Override
    public String toString() {
        return "VenusTechConfig2{" +
                "name='" + name + '\'' +
                ", version='" + version + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getVersion() {
        return version;
    }

    public String getDesc() {
        return desc;
    }
}

自定义配置文件

有时候一些公用配置不宜写在application.yml配置文件中,这时候就可以建立公用配置文件,独立于环境配置,所有环境都可以使用。

venusconfig.properties

com.venustech.tj.name=天镜脆弱性扫描与管理系统
com.venustech.tj.version=1.2.3
com.venustech.tj.desc=${com.venustech.tj.name}是启明星辰自主研发的漏洞扫描产品,基于网络的脆弱性分析、评估与管理系统。提供对主机、操作系统以及网络设备的脆弱性检查、评估与管理。版本是${com.venustech.tj.version}

使用@PropertySource指定配置文件路径

package com.venustech.platform.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@PropertySource("classpath:venusconfig.properties")
@ConfigurationProperties(prefix = "com.venustech.tj")
public class VenusTechConfig3 {
    private String name;
    private String version;
    private String desc;
    ...
}

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部