如何使用Spring Boot的Profiles

banq 18-08-22
         

Spring提供了@Profile让我们为不同的环境创建不同的配置:例如,假设我们有生产,开发和测试等环境。在开发环境中,我们可以启用开发配置文件;在生产环境中我们可以启用生产配置文件等。

我们可以使用profile文件名称创建属性文件:application-{profile}.properties,我们可以使用名为application-dev.properties和application-production.properties的两个文件为开发和生产配置文件配置不同的数据源。
在application-production.properties文件中,我们可以设置MySql数据源:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db
spring.datasource.username=root
spring.datasource.password=root

可以在application-dev.properties文件中为dev配置文件配置相同的属性,以使用内存中的H2数据库:

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
spring.datasource.username=sa
spring.datasource.password=sa


可以使用属性文件.properties / .yml、命令行和以编程等三种方式激活相应的配置文件。

激活方式:
1. 使用 application.properties属性文件激活 .
spring.profiles.active=dev

2. 使用命令行, 当我们在命令行添加一个活动配置时,将取代属性文件中的活动配置。
java -jar -Dspring.profiles.active=dev myapp.jar

3. 通过编程激活:

@Component
@Profile("dev") //也可以配置成@Profile("!dev")
public class DevDatasourceConfig
..



@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(MyApplication.class);
application.setAdditionalProfiles("dev");
application.run(args);
}
}


4. 在Spring测试中,使用@ActiveProfiles注释添加活动配置文件。

5. 系统环境激活:
export spring_profiles_active=dev

这是Spring Boot配置外部化的灵活。