SpringBoot2.x——多环境配置

方式一:创建多个环境的配置文件,然后在application.yml中加上一个spring.profiles.active=xxx ,分别指定配置文件的后缀就可以使用对应环境的配置了

https://blog.csdn.net/husong_/article/details/79784265

方式二:使用spring为我们提供的Profile
配置类:

//@Profile("test")  只有是test环境的时候,整个配置类里面的所有配置才能开始生效
@PropertySource("classpath:/config/dbconfig.properties")
@Configuration
public class MainConfigOfProfile  implements EmbeddedValueResolverAware {
    @Value("${jdbc.username}")
    private String user;
    private StringValueResolver valueResolver;
    private String driverClass;

//    @Profile("test")  没有标注环境标识的bean,在任何环境下都是加载的
//    @Bean
//    public Yellow yellow(){
//        return new Yellow();
//    }

    @Profile("test")  //加了环境标识的bean,只有这个环境被激活的时候才能注册到容器中
    @Bean("testDataSource")
    public DataSource dataSourceTest(@Value("${jdbc.password}") String pwd) throws Exception{
        HikariDataSource hikariDataSource = new HikariDataSource();
        hikariDataSource.setUsername(user);
        hikariDataSource.setPassword(pwd);
        hikariDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/taotao?useUnicode=true&characterEncoding=UTF-8&useSSL=false");
        hikariDataSource.setDriverClassName(driverClass);
        return hikariDataSource;
    }
    @Profile("dev")
    @Bean("DevDataSource")
    public DataSource dataSourceDev(@Value("${jdbc.password}") String pwd) throws Exception{
        HikariDataSource hikariDataSource = new HikariDataSource();
        hikariDataSource.setUsername(user);
        hikariDataSource.setPassword(pwd);
        hikariDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=UTF-8&useSSL=false");
        hikariDataSource.setDriverClassName(driverClass);
        return hikariDataSource;
    }
    @Profile("prod")
    @Bean("ProdDataSource")
    public DataSource dataSourceProd(@Value("${jdbc.password}") String pwd) throws Exception{
        HikariDataSource hikariDataSource = new HikariDataSource();
        hikariDataSource.setUsername(user);
        hikariDataSource.setPassword(pwd);
        hikariDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=UTF-8&useSSL=false");
        hikariDataSource.setDriverClassName(driverClass);
        return hikariDataSource;
    }
    @Override
    public void setEmbeddedValueResolver(StringValueResolver resolver) {
        this.valueResolver=resolver;
        driverClass= valueResolver.resolveStringValue("${jdbc.driver}");
    }
}

dbconfig.properties配置文件:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=123456

application.properties:设置使用哪个环境

spring.profiles.active=prod

测试:

 @Autowired
 private HikariDataSource source;
 @Test
 public void showDataSource()throws Exception{
     DatabaseMetaData metaData = source.getConnection().getMetaData();
     System.out.println(metaData.getURL());
 }
 //spring.profiles.active=prod
 jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=UTF-8&useSSL=false
 //spring.profiles.active=dev
 jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=UTF-8&useSSL=false
 //spring.profiles.active=test
 jdbc:mysql://localhost:3306/taotao?useUnicode=true&characterEncoding=UTF-8&useSSL=false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值