springboot 动态切换配置文件

properties匹配规则

根据命名约定(命名格式:application-{profile}.properties)来配置,如果active赋予的参数没有与使用该命名约定格式文件相匹配的话,app则会默认从名为application-default.properties 的配置文件加载配置。
如:spring.profiles.active=hello-world,sender,dev 有三个参数,其中 dev 正好匹配下面配置中的application-dev.properties 配置文件,所以app启动时,项目会先从application-dev.properties加载配置,再从application.properties配置文件加载配置,如果有重复的配置,则会以application.properties的配置为准。

举例说明:

配置文件命名如下图:
配置文件

  1. application.yml
spring:
  profiles:
    active: dev
  1. application-dev.yml
app:
  name: dev
  1. application-test.yml
app:
  name: test
  1. 代码编写 由于application-yml配置的spring.profiles.active: dev
@RestController
public class HelloController {

    @Value("${app.name}")
    private String name;

    @GetMapping("getname")
    public String getName(){
        return "app name: "+ name;
    }
}
输出结果:
app name: dev

使用@Profile注解

举例说明:

  1. 定义业务接口
public interface HelloService {

    public void send();
}

2.实现接口,定义具体业务

@Service
@Profile("dev")
public class HelloServiceDevImpl implements HelloService {
    @Override
    public void send() {
        System.out.println("开发环境执行的业务");
    }
}
-------------------------------------
@Service
@Profile("test")
public class HelloServiceTestImpl implements HelloService {
    @Override
    public void send() {
        System.out.println("测试环境执行的业务");
    }
}
  1. 调用接口
     //注入业务接口
    @Autowired
    private HelloService helloService ;
    调用方法
    public void fun(){
    
        helloService.send(); 
}


通过命令行设置属性值

在命令行运行时,连续的两个减号–就是对application.properties中的属性值进行赋值的标识
test、dev、pro

执行java -jar xxx.jar --spring.profiles.active=test,也就是测试环境的配置(test)
执行java -jar xxx.jar --spring.profiles.active=dev,也就是开发环境的配置(dev)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值