问题正是@geoand所描述的。Spring boot 加载顶级,并忽略任何属性文件,其确切名称位于其他 jar 中。application.properties
但是我没有找到任何关于如何解决这个问题的具体实现,所以这里是为那些想知道实现的人准备的。
请考虑以下项目配置:
+main_module
+src
+main
+java
+my/package/Application.java
+resources/application.properties
+module_aa
+src
+main
+java
+my/package/config/ModuleAAConfig.java
+resources/module_aa.properties
+module_bb
+src
+main
+java
+my/package/config/ModuleBBConfig.java
+resources/module_bb.properties
现在,要正确加载每个子模块的属性,我们需要在每个模块的配置上添加注释,即。@PropertySource
ModuleAAConfig.java, ModuleBBConfig.java
例:
ModuleAAConfig.java
package my.package.config;
@Configuration
@PropertySource(
ignoreResourceNotFound = false,
value = "classpath:module_aa.properties")
public class ModuleAAConfig {}
ModuleBBConfig.java
package my.package.config;
@Configuration
@PropertySource(
ignoreResourceNotFound = false,
value = "classpath:module_bb.properties")
public class ModuleBBConfig {}
奖金:
如果要加载配置文件特定的属性,则可以通过使用弹簧变量来执行此操作,例如
@PropertySource("classpath:module_aa-${spring.profiles.active}.properties")