一尘不染

多模块Maven项目中的Spring Boot配置

spring-boot

我在为多模块Maven项目正确设置Spring Boot时遇到问题。

没有使用另一个模块“核心”的模块“ api”。Api有一个application.properties文件,其中包含spring.mail.host =
xxx。根据spring boot文档,这为您提供了JavaMailSender接口的默认实现,可以自动连接。

但是,负责发送电子邮件的类位于“核心”程序包中。当我尝试构建该模块时,构建失败,因为找不到JavaMailSender的实现。

然后我的猜测是,邮件配置应驻留在单独的application.properties的“核心”中。我创建了该文件,并将spring.mail.host属性从“
api”移至“ core”属性文件。

这次核心模块成功构建,但由于相同的异常,“ api”构建失败,所以我认为我只是提出了问题。

我无法充分理解处理此类情况所需的结构,所以我想知道拥有包含所有正确配置的“核心”模块来发送邮件以及使用其他模块使用邮件代码和配置的“核心”模块的正确方法是什么驻留在其中。


阅读 330

收藏
2020-05-30

共1个答案

一尘不染

事实证明,SpringBoot创建的最终jar中只能有1个application.properties文件。要拥有多个文件,您必须将其中一个文件重命名为自定义名称。我将核心模块的属性命名为“core-application.properties”。

然后在API模块中,将其添加到spring boot应用程序类中:

@SpringBootApplication
@PropertySource(value = {"core-application.properties", "application.properties"})

这样做,我可以正确使用基本属性文件,并在更特定的模块中覆盖它们。同样,您仍然可以使用此设置创建特定于配置文件的属性文件(core-application-production.properties),而无需手动将其添加到propertysource中。请注意,此时@PropertySource不适用于yaml配置文件。

2020-05-30