springboot自定义属性及多环境化配置

springboot支持自定义属性配置及自定义文件配置。主要通过@PropertySource、@ConfigurationProperties两个注解来实现。

在application.properties文件中加入以下内容:

wk.activeName = dev

然后在bean中可以使用@ConfigurationProperties注解直接注入值:

@RestController
@ConfigurationProperties(prefix = "wk")
public class ApplicationActiveController {

    public String getActiveName() {
        return activeName;
    }

    public void setActiveName(String activeName) {
        this.activeName = activeName;
    }

    private String activeName;

    @GetMapping("/application/active")
    public String applicationActiveName(){
        System.out.println(activeName);
        return activeName;
    }
}

访问http://localhost:8080/application/active,可以得到我们在配置文件中设置的值。这里需要注意的是,需要从配置文件中读取的值需要有set方法,不然无法赋值。

我们再新建一个application-run.properties文件,里面加入以下内容:

wk.activeName = run

然后使用@PropertySource注解来加载配置文件:

@RestController
@PropertySource("classpath:config/application-run.properties")
@ConfigurationProperties(prefix = "wk")
public class ApplicationActiveController {

    public String getActiveName() {
        return activeName;
    }

    public void setActiveName(String activeName) {
        this.activeName = activeName;
    }

    private String activeName;

    @GetMapping("/application/active")
    public String applicationActiveName(){
        System.out.println(activeName);
        return activeName;
    }
}

访问http://localhost:8080/application/active,我们会发现结果还是dev,结果错误;去掉application.properties中的相应字段,再次访问,结果为run,正确。由此可以发现如果一个值在application.properties中存在,那么就会覆盖其他配置文件的属性。

在我们平常开发中,经常是开发是一套数据库,测试一套数据库,线上又是另外一套数据库,这个时候就需要修改相应的数据库配置,spring中有profile注解来实现,springboot则提供了一个叫spring.profiles.active的属性来实现,根据它的值来加载不同的配置文件,相应配置文件的值为application-{profile}.properties,这个application前缀不能变,profile的值为spring.profile.active的值。
例如在application.properties加入:

spring.profiles.active=run

那么在加载配置的时候,除了application.properties中的属性外,还会加载application-run.properties配置文件的值。注意:application.properties的中如果与application-run.properties存在相同值,则会取application.properties中的值。

如果只是这样,那么每次在不同环境中运行时,我们还要修改application.properties中的spring.profiles.active的值,依旧很麻烦。只时候我们可以通过外部命令来引导,及使用springboot启动时的命令行参数来做到。

例如我们springboot项目最后打包的jar叫test.jar,我们需要在启动时采用运行环境配置即application-run.properties的配置参数,则命令为:

java -jar test.jar --spring.profiles.active=run

在IDEA中调试项目时可以直接在运行配置中配置相应active.profile参数,如图为使用开发配置参数application-dev.properties。
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值