java - java如何使用 Spring Boot 配置文件

  显示原文与译文双语对照的内容
92 0

我有 application.ymlapplication-dev.ymlapplication-dev.yml

  • 我正在使用 Maven 命令mvn spring-boot:run -Dspring.profiles.active=dev它不工作,我不能使用 mvn spring-boot:run 來選擇開發概要文件。我如何選擇它?
  • 文檔說明java -jar XXX.jar --spring.profiles.active=dev工作,我嘗試了 -Dspring.profiles.active=dev 但它不工作。在我的項目中,我使用 java -jar XXX.jar 運行,但如果我使用java -jar XXX.jar --spring.profiles.active=dev要選擇dev配置文件,控制台列印這麼多日誌並警告我從未看到過 java -jar XXX.jar,並告訴我APPLICATION FAILED TO START

那麼如何解決兩個問題?感謝~

时间:原作者:0个回答

125 5

你不需要三個. yml 文件。可以以在同一個 application.yml 文件中使用 3個連字元( --- ) 將配置文件特定屬性寫入同一個文件。

接下來,為了選擇當前活動配置文件,你可以在 application.yml 文件中指定這裡選項,如下所示:

spring:
 profiles:
 active:
 - local

但是,如果設置環境變數,則將重寫這裡配置,例如:SPRING_PROFILES_ACTIVE = 開發

以下是你需要的樣例文件:

# include common properties for every profile in this section
server.port: 5000 
spring:
 profiles:
 active:
 - local
---
# profile specific properties
spring:
 profiles: local
 datasource:
 url: jdbc:mysql://localhost:3306/
 username: root
 password: root
---
# profile specific properties
spring:
 profiles: dev
 datasource:
 url: jdbc:mysql://<dev db url>
 username: <username>
 password: <password>
原作者:
78 2

如果你使用的是 Spring Boot Maven 插件,請運行:

mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar

( https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-profiles.html )

原作者:
112 4

你可以按照一個 application.properties(yml)的配置文件指定屬性,例如這裡的 然後mvn clean spring-boot:run -Dspring.profiles.active=dev應該是正確的它對我有用

原作者:
85 5

@Profile 註釋允許你指示一個組件在一個或者多個指定的配置文件處於活動狀態時有資格註冊。使用上面的示例,我們可以重寫數據源配置,如下所示:

@Configuration
@Profile("dev")
public class StandaloneDataConfig {
 @Bean
 public DataSource dataSource() {
 return new EmbeddedDatabaseBuilder()
. setType(EmbeddedDatabaseType.HSQL)
. addScript("classpath:com/bank/config/sql/schema.sql")
. addScript("classpath:com/bank/config/sql/test-data.sql")
. build();
 }
}

還有其他的:

@Configuration
@Profile("production")
public class JndiDataConfig {
 @Bean(destroyMethod="")
 public DataSource dataSource() throws Exception {
 Context ctx = new InitialContext();
 return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");
 }
}
原作者:
...