多环境的配置就是根据环境标签去适配相应环境的配置参数,好处就是“一套代码,到处运行”,不用随环境改变去修改代码。
虽然现在的springboot已经可以很好的支持多环境配置了,但是背后的原理还是要知道的。
那大致的想下,怎么实现的呢?
概括的说,其实很简单,就是那些配置类的bean是根据不同的环境标签动态注入spring容器实现的。
也就是说,根据环境标签,去注入和这个环境对应的配置类的bean到Spring容器。
一、@Profile
spring中使用@Profile注解去给bean添加一个环境标签,我们先看不使用该注解时会怎样:
假设SomeConfig是某个配置类,类似DataSource数据配置类,不同的环境有不同的值。
@Data
public class SomeConfig {
private String url;
private String port;
}
@Configuration
public class ProfileConfig {
@Bean
public SomeConfig someConfigDev(){