SpingBoot动态化配置

638 阅读1分钟

很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用profile在不同的环境下配置用不同的配置文件或者不同的配置。

spring boot通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properties通过spring.profiles.active来具体激活一个或者多个配置文件,如果没有没有指定任何profile的配置文件的话,spring boot默认会启动application-default.properties。

一、激活profile的方法

1.配置在配置文件application.properties中

2.在代码中使用@Profile注解来进行配置,在接口实现类上可以配置该实现的具体使用环境

public interface IDBConn {
    public void getConn();
}

import org.springframework.context.annotation.Profile;
@Profile("dev")
public class DevDBConn implements IDBConn{    
    @Override    
    public void getConn() {        
        System.out.println("dev conn");    
    }
}

import org.springframework.context.annotation.Profile;
@Profile("prod")
public class ProDBConn implements IDBConn{    
    @Override    
    public void getConn() {        
        System.out.println("prod conn");    
    }
}

二、配置多个profile的方法

spring.profiles.include: dev,prod

三、当我们针对不同的环境,如开发环境和生成环境写了多个配置文件如

application-dev-properties

application-prod-properties

这种情况,我们无法在生产环境中通过修改application-properties中的spring.profiles.active来激活配置就非常不方便,可以采用加入启动参数的方法来激活配置,例如

-Dspring.profiles.active=prod