我想覆盖我在使用它的项目中编写的库属性。我正在使用这个Spring指南来创建库:https://spring.io/guides/gs/multi-module/
我想知道如何在使用我的库的项目中覆盖例如my.properties文件。
有可能吗?
答案 0 :(得分:2)
请勿将application.properties文件添加到库中。这可能会导致许多问题。如果要设置默认属性,请执行以下操作:
@ConfigurationProperties("foo")
public class FooConfig {
private int bar = 999;
// getter / setter
}
每个应用程序都应在自己的application.properties文件中为其自身配置库值。
答案 1 :(得分:0)
似乎不能。由于Spring本身也不能
在上面的示例中,我们使用@SpringBootTest批注的默认属性为测试配置了service.message。不建议将application.properties放在库中,因为使用它的应用程序在运行时可能会发生冲突(从类路径中仅加载过一个application.properties)。您可以将application.properties放在测试类路径中,但不将其包含在jar中,例如,将其放在src / test / resources中。
答案 2 :(得分:0)
Spring Boot属性顺序优先级描述如下:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
通过链接:
Spring Boot uses a very particular PropertySource order that is designed to allow sensible overriding of values. Properties are considered in the following order:
那么顺序是1-17。例如,列表(命令行参数)上的4会覆盖列表(您的application.properties文件)上的15,依此类推。
答案 3 :(得分:0)
取决于库属性文件如何指定属性。如果首先从环境/系统中查找属性,则可以在代码中覆盖。如果是硬编码,则不会。 例如:
prop=${ENV_VAR:abc}
您可以在代码中设置ENV_VAR
环境变量或env-var
系统变量以覆盖prop
的值。否则,将使用默认值abc
。