在我的 Spring Boot 应用程序中,我刚刚开始使用不同的环境进行开发,并且对正确的切换步骤和场景感到非常困惑。
还有一些文件我无法完全理解,因为网络上有一些关于这些文件的相互冲突的信息。
您能帮我解释一下以下这些问题吗?
1) 据我所知,我们可以通过应用程序属性中的以下设置来设置环境。这是真的吗?还有其他方法可以切换环境吗?
spring:
profiles:
active: production
2) 还有另一个名为
.env
的文件,我认为还有不同的版本,例如.env-dev
。据我所知,它是用来定义环境变量的。但是,例如,当我从 IntelliJ 运行应用程序时,我不确定 IntelliJ 是否应该从中读取变量并在运行应用程序时使用。我该如何使用这个文件?
基于这两个问题,您基本上可以给出一个示例场景来设置开发和生产环境并在它们之间进行切换。任何帮助将不胜感激。
是的,您可以使用
spring.profiles.active
,但您可能不应该使用,因为您在 application.yml
中指定了它,这应该与配置文件无关。相反,正如他们在评论中指出的那样,最好依靠例如--spring.profiles.active=dev
这将告诉 Spring Boot 使用 application.yml
和 application-dev.yml
中的属性。
我根本不会使用这个文件并依赖
application.yml
,因为两个主要原因:
如果我要解决您的开发和生产环境问题,我会创建三个文件:
然后我通过指定 --spring.profiles.active=dev|prod`
在配置文件之间切换附注至于您在评论中提出的问题:
--spring.profiles.active=dev
指定配置文件并且有一个属性,例如server.port
在 application.yml
和 application-dev.yml
中,将使用 application-dev.yml
中的值。所以你可以覆盖属性。这是覆盖属性的标准技术。.env
文件中的属性。通常,操作系统级别的环境变量在 Java 中使用 System.getProperty(String)
进行访问。此外,某些框架的使用意味着指定了某些属性,例如Apache Spark 通常需要 HADOOP_HOME
。因此删除这些 .env
文件可能会很危险。