我有一个项目,我们称之为BaseProject
,其中包含定义不同配置的属性文件。其中一个属性可能是security.password.minlength=4
。
现在我有一个ProjectA
,它会在BaseProject
上构建,并且取决于它。
ProjectA
|
|--BaseProject
现在在ProjectA
我希望默认security.password.minlength
为8。
如果我只是将application.properties
文件添加到我的ProjectA
,其中包含security.password.minlength=8
,并且特定属性设置为8.我强调所有其他属性形成我的BaseProject
现在被忽略,给我例外:java.lang.IllegalArgumentException: Could not resolve placeholder
我仍然想使用BaseProject
中定义的所有属性,但只将security.password.minlength
设置为不同的值。我怎样才能做到这一点?
更新
目前我让Spring处理application.properties文件。在我的应用程序中,我只是从Spring环境中获取值。
答案 0 :(得分:1)
如果您使用Spring Boot的默认属性处理,则可以使用配置文件。例如。您可以为派生项目使用名为projecta
的配置文件,并在名为application-projecta.properties
的文件中指定您的属性。当您指定要激活的配置文件时,将自动获取此信息(请参阅此处:http://www.baeldung.com/spring-profiles)
答案 1 :(得分:0)
我找到了以下解决方案:
BaseProject
有application.properties
,其中包含所有默认值。
ProjectA
有projectA.properties
我与
@PropertySource("projectA.properties")
public class ProjectA {
public static void main(String[] args) {
SpringApplication.run(ProjectA .class, args);
}
}
这允许我覆盖BaseProject
文件中projectA.properties
项目的任何属性。我未在projectA.properties
中定义的属性仍然来自BaseProject的application.properties
。