在我的Sping Boot 应用程序中,我刚刚开始使用不同的开发环境,对正确的切换步骤和场景感到非常困惑。
也有一些文件,我不能完全理解,因为有几个冲突的信息在网络上关于这些文件。
您能否就以下这些问题向我澄清一下?
**1)**据我所知,我们可以通过应用程序属性中的以下设置来设置环境。是这样吗?是否有其他方法可以在环境之间切换?
spring:
profiles:
active: production
**2)**还有一个叫.env
的文件,我想也有不同的版本,比如.env-dev
,据我所知,它是用来定义环境变量的,但是,比如我从IntelliJ运行应用的时候,我不确定IntelliJ是否应该从中读取变量,在运行应用的时候使用,我应该怎么使用这个文件?
基于这两个问题,你基本上可以给予一个示例场景来设置开发和生产环境,并在它们之间切换。
1条答案
按热度按时间nuypyhwy1#
1.是的,你可以使用
spring.profiles.active
,但你可能不应该,因为你在application.yml
中指定了这个,它应该是配置文件不可知的。相反,正如他们在评论中指出的,最好依赖--spring.profiles.active=dev
,它会告诉Sping Boot 使用application.yml
和application-dev.yml
的属性。1.我根本不会使用这个文件,而是依赖于
application.yml
,这主要有两个原因:如果要解决开发和生产环境的问题,我将创建三个文件:
然后,我将通过指定--spring.profiles.active=dev在配置文件之间切换|刺
P.S.截至您在评论中的问题:
1.如果你用--spring.profiles.active=dev
and there's a property e.g.
server.portin both
application.ymland
application-dev.ymlthe value from
application-dev.yml '来指定一个配置文件,那么你可以覆盖属性,这是覆盖属性的标准技术。1.嗯,我不知道你是如何使用
.env
文件中的属性的。通常在Java中使用System.getProperty(String)
来访问操作系统级别的环境变量。此外,一些框架的用法暗示了指定了某个属性,例如Apache Spark通常需要HADOOP_HOME
。因此删除这些.env
文件可能会很危险。1.对于机密,您可以使用Vault。其思想是,您为它们指定一个密钥,而不是凭据或其他敏感数据,应用程序在运行时使用此密钥从Vault中获取机密。这允许即使配置文件泄漏也能保护数据。