4 回答
TA贡献1890条经验 获得超9个赞
在资源文件夹中
制作 application.yml、application-local.yml、application-dev.yml 等文件。你想要什么
然后在 application.yml
spring.profile.active = ${ENV}现在在运行期间从 Intellij 下的运行/调试配置中指定 ENV 变量,或者在 application.yml 中提及您要为其构建 jar 的配置文件。
或者,您可以使用 -D spring.profile.active=dev
TA贡献1809条经验 获得超8个赞
经典的解决方案是设置一个配置文件(我更喜欢属性,因为我很理智)并允许在每个已安装的主机上放置一个覆盖文件。
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贡献1866条经验 获得超5个赞
首先,来自文档:
SpringApplication 从以下位置的 application.properties 文件中加载属性并将它们添加到 Spring 环境中:
当前目录的 /config 子目录
当前目录
一个类路径 /config 包
类路径根
因此,通过传递目录层次结构,您会遇到问题。
其次,对于文件规范,您可以使用Profiles。这工作如下:
如果没有指定的配置文件 -
application.properties将被使用对于任何其他配置文件,也将使用带有名称的配置文件
application-<name>.properties
因此,如果您指定dev和cool配置文件,属性application.properties,,,application-dev.properties`application-cool.properties,将被使用
更新:
您可以传递spring.config.location属性文件路径指定,但如果您想要目录层次结构 - 您需要使用ApplicationContextInitializercontext.initializers.classes进行一些自定义
TA贡献1842条经验 获得超13个赞
在我的项目中,我使用 VM 选项指定了一个配置文件:-Dspring.profiles.active=local
然后我有一个名为 application-local.yml 的文件
在生产中: -Dspring.profiles.active=prod ,将使用文件 application-prod.yml
添加回答
举报
