Java 如何使用spring boot多模块继承application.properties

Java 如何使用spring boot多模块继承application.properties,java,spring,maven,spring-boot,dependency-properties,Java,Spring,Maven,Spring Boot,Dependency Properties,我使用spring启动多个模块,并希望从父级继承application.properties。我有父模块:spring电子商务演示和子模块:模型、核心和安全。在父模块中,我放置了一些配置jdbc,如下所示: @SpringBootApplication(scanBasePackages = "springecommeredemo") @PropertySources({ @PropertySource("application-security.properties") })

我使用spring启动多个模块,并希望从父级继承application.properties。我有父模块:spring电子商务演示和子模块:模型、核心和安全。在父模块中,我放置了一些配置jdbc,如下所示:

@SpringBootApplication(scanBasePackages = "springecommeredemo")
@PropertySources({
        @PropertySource("application-security.properties")
})
应用程序.properties(父模块)

在子模块安全性中,我的特定配置如下所示:

应用程序安全性.属性(安全模块)

安全模块中Spring Boot应用程序的配置如下所示:

@SpringBootApplication(scanBasePackages = "springecommeredemo")
@PropertySources({
        @PropertySource("application-security.properties")
})
但当我运行它时,它会抛出异常

说明:

未能配置数据源:“url”属性未指定且 无法配置嵌入式数据源

原因:无法确定合适的驱动程序类别

行动:

考虑以下事项:如果您想要一个嵌入式数据库(H2、HSQL或 Derby),请将其放在类路径上。如果你有数据库设置 要从特定配置文件加载,您可能需要激活它 (配置文件dev当前处于活动状态)


这意味着子模块安全性无法从父项目继承属性。如何从父模块继承所有属性。因为我使用相同的数据库,所以我不希望在我的项目中配置重复的jdbc。我想要继承公共属性。请帮助

您需要添加多个
属性
可以在Spring中访问,我为
@PropertySource
添加了重复的注释,因为在
Java8
之前,如果您需要使用同一注释的多个实例,它们必须包装在一个容器注释中。对于
java8
,这不再是必需的,允许编写更干净、更可读的代码

@SpringBootApplication(scanBasePackages = "springecommeredemo")
@PropertySource("application.properties")
@PropertySource("application-security.properties")

我在这里找到了解决方案:


仅创建子模块:示例:server config并运行它。在子模块中:安全性将服务器配置添加为依赖项并运行它。它适合我

我使用spring boot 2.5。假设我有一个公共模块和一个应用程序模块,它使用公共模块。如果我想访问公共模块属性文件中定义的所有属性,那么我会将以下内容添加到应用模块属性文件的顶部

spring.config.import=classpath:common-module.properties

“公共模块”属性文件可以有任何名称。

如果您有一个
配置服务器
,为任何
微服务
提供配置,这将很容易实现,就像本例中的
安全
一样,那么它就可以工作了。所以你想做什么,我会创造一个更好的答案。@JonathanJohx谢谢你,请帮助我。如果我理解正确,我需要创建子模块配置服务器,并将其关联到安全中?您使用的是体系结构
微服务
?对吗?@JonathanJohx是的。没错,但当我将@PropertySource(“application.properties”)放在模块安全性的application.class中时,它抛出了一个异常:在类中找不到application.propertiespath@BaoTrungTran-您是否将属性保存在src/main/resources文件夹中?是的。我将application.properties与父模块(spring电子商务演示)而不是子模块(安全)一起保留在类路径中
spring.config.import=classpath:common-module.properties