如何使用Spring Boot的Profiles

banq發表於2018-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
<p class="indent">

可以在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
<p class="indent">


可以使用屬性檔案.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
..
<p class="indent">


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


4. 在Spring測試中,使用@ActiveProfiles註釋新增活動配置檔案。

5. 系統環境啟用:
export spring_profiles_active=dev

這是Spring Boot配置外部化的靈活。

相關文章