4 回答
TA贡献1804条经验 获得超8个赞
在我的项目中,我使用VM选项指定了一个配置文件:-Dspring.profiles.active=local
然后我有一个名为appplication-local.yml的文件
在生产中: -Dspring.profiles.active=prod , 将使用文件 application-prod.yml
TA贡献2019条经验 获得超9个赞
经典的解决方案是设置一个配置文件(我更喜欢属性,因为我是理智的),并允许在每个已安装的主机上放置一个覆盖文件。
Spring支持这种开箱即用的功能。
下面是一个示例:
public static void main(final String[] argumentArray)
{
final StringApplicationBuilder springApplicationBuilder;
springApplicationBuilder = new SpringApplicationBuilder(YourSpringBootApplication.class)
springApplicationBuilder.properties(
"spring.config.location=classpath:/yourConfig.properties,/some/path/to/overrides/directory/yourConfig.properties");
springApplicationBuilder.build().run(argumentArray);
}
TA贡献1825条经验 获得超6个赞
在资源文件夹中
請製作 application.yml、application-local.yml、application-dev.yml 等的檔案。你想要什么
然后在应用程序中.yml
spring.profile.active = ${ENV}
现在,在运行期间,在 Intellij 下指定运行/调试配置中的 ENV 变量,或者提及要在 application.yml 中为其构建 jar 的配置文件。
或者,您可以使用 -D spring.profile.active=dev
TA贡献1847条经验 获得超11个赞
首先,从文档中可以看出:
SpringApplication 从 application.properties 文件中加载以下位置的属性,并将它们添加到 Spring 环境中:
当前目录的 /config 子目录
当前目录
类路径 /配置包
类路径根
因此,使用传递的目录层次结构,您将遇到问题。
对于文件规范,您可以使用配置文件。其工作原理如下:
如果没有指定的配置文件 - 将使用
application.properties
对于任何其他配置文件也将使用具有名称的配置文件
application-<name>.properties
因此,如果您指定和配置文件,则属性 ,'application-cool.properties, 将处于使用状态dev
cool
application.properties
application-dev.properties
更新:
您可以传递属性文件路径指定,但是如果您想要目录层次结构,则需要使用 和 ApplicationContextInitializer 进行一些自定义spring.config.location
context.initializers.classes
添加回答
举报