2016-01-22 79 views
0

我正在为我的多模块maven项目正确设置spring引导时出现问题。多模块maven项目中的Spring引导配置

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

但是,负责发送电子邮件的类驻留在“核心”包中。当我尝试构建该模块时,构建失败,因为没有找到JavaMailSender的实现。

我的猜测是邮件配置应该驻留在一个单独的application.properties中的“core”中。我创建了它,并将spring.mail.host属性从“api”移动到“core”属性文件。

这次核心模块成功构建,但由于相同的异常,“api”无法生成,所以我想我只是提出了这个问题。

我不明白处理这种情况所需的结构,所以我想知道正确的方法是让“核心”模块包含发送邮件的所有正确配置,并让其他模块使用邮寄代码和驻留在其中的配置。

+0

你可以好好发布stacktrace吗? – WeMakeSoftware

回答

2

我发现了另一个堆栈溢出问题的答案:How to add multiple application.properties files in spring-boot?

原来有只能在那年春天启动创建最终的jar 1个application.properties文件。要拥有多个文件,您必须将其中一个文件重命名为自定义。我命名了核心模块“core-application.properties”的属性。

然后API模块中的我已将此添加到弹簧引导应用类:

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

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

1

每个项目有一个有效application.properties。你只需要保存2个属性文件以获得成功构建。

api模块使用core模块时,核心模块中的application.properties被覆盖api

1

您的API的pom.xml必须具有CORE模块的依赖关系。