geo*_*ydv 4 java spring 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”构建失败,所以我认为我只是提出了问题。
我无法充分理解处理此类情况所需的结构,因此我想知道具有包含所有正确配置的“核心”模块的正确方法是什么,该模块包含用于发送邮件的所有正确配置,并让其他模块使用邮件代码和config驻留在其中。
我在另一个堆栈溢出问题中找到了答案:如何在spring-boot中添加多个application.properties文件?
事实证明,Spring Boot创建的最终jar中只有1个application.properties文件。要拥有多个文件,您必须将其中一个文件重命名为自定义名称。我将核心模块的属性命名为“ core-application.properties”。
然后在API模块中,将其添加到spring boot应用程序类中:
@SpringBootApplication
@PropertySource(value = {"core-application.properties", "application.properties"})
Run Code Online (Sandbox Code Playgroud)
这样做,我可以正确使用基本属性文件,并在更特定的模块中覆盖它们。此外,您仍然可以使用此设置创建特定于配置文件的属性文件(core-application-production.properties),而无需手动将其添加到propertysource中。请注意,此时@PropertySource不适用于yaml配置文件。
| 归档时间: |
|
| 查看次数: |
7712 次 |
| 最近记录: |