如何使用Spring Boot配置文件
我有application.yml
, application-dev.yml
和application-dev.yml
- 我正在使用maven命令
mvn spring-boot:run -Dspring.profiles.active=dev
它不起作用,我无法使用mvn spring-boot:run
选择dev配置文件。 我该如何选择? - 文档说
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
那么如何解决两个问题呢? 谢谢〜
我不确定我是否完全理解这个问题,但我会尝试通过提供有关Spring Boot中的配置文件的一些细节来回答。
对于您的#1示例,根据文档,您可以使用-Drun.profiles
使用Spring Boot Maven插件选择配置文件。
mvn spring-boot:run -Drun.profiles=dev
http://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-profiles.html
在#2示例中,您将在jar名称后面定义活动配置文件。 您需要在运行jar的名称之前提供JVM参数。
java -jar -Dspring.profiles.active=dev XXX.jar
基本信息:
你提到你有一个application.yml
和一个application-dev.yml
。 使用dev
配置文件运行实际上会加载两个配置文件。 application-dev.yml
的值将覆盖application.yml
提供的相同值,但将加载来自两个yml
文件的值。
还有多种方法可以定义活动配置文件。
您可以像运行jar一样使用-Dspring.profiles.active
定义它们。 您还可以使用SPRING_PROFILES_ACTIVE
环境变量或spring.profiles.active
系统属性设置配置文件。
更多信息可以在这里找到: http : //docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-set-active-spring-profiles
你不需要三个.yml文件。 您可以拥有一个application.yml文件,并在每个配置文件部分用3个连字符(—)分隔的相同内容中编写配置文件特定的属性
接下来,为了选择当前活动的配置文件,您也可以在application.yml文件中指定它,如下所示:
spring: profiles: active: - local
但是,如果设置环境变量,则会覆盖此配置,例如:SPRING_PROFILES_ACTIVE = dev
以下是您需要的示例文件:
# 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:// username: password:
如果您使用的是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 )
您可以在一个application.properties(yml)中根据配置文件指定属性,就像这里一样。 然后mvn clean spring-boot:run -Dspring.profiles.active=dev
应该正确运行它。 这个对我有用
@Profile注释允许您在一个或多个指定的配置文件处于活动状态时指示组件符合注册条件。 使用上面的示例,我们可以重写dataSource配置,如下所示:
@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"); } }