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配置外部化的灵活。