我正在尝试编写Spring Boot多模块应用程序,在该应用程序中,我不是按逻辑层(例如Web /服务/ Dao)而是按域区域来分隔模块。
因此,我想使用具有类似结构的单独上下文的应用程序
root-context
|- UsersModule
|- CompaniesModule
|- InvoicesModule
|- etc...
每个模块都应提供自己的控制器,服务等。但是我只想开始一个嵌入式servlet容器(tomcat)并将其“共享”到所有模块。
这是我的Application类(根上下文)
@EnableAsync
@EnableConfigurationProperties(ProcampConfiguration.class)
@SpringBootApplication(scanBasePackages = "org.yvasylchuk.procamp.config")
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class ProcampApplication {
public static void main(String[] args) {
new SpringApplicationBuilder()
.parent(ProcampApplication.class).web(WebApplicationType.NONE)
.child(UserModuleConfiguration.class).web(WebApplicationType.SERVLET)
.sibling(CompanyModuleConfiguration.class).web(WebApplicationType.SERVLET)
.run(args);
}
}
这是用户模块的配置类(以相同的方式配置公司模块)
@Configuration
@ComponentScan("org.yvasylchuk.procamp.user")
@EnableMongoRepositories(basePackages = "org.yvasylchuk.procamp.user.repository")
@EnableAutoConfiguration()
public class UserModuleConfiguration {
}
在这种情况下,用户模块成功启动,但是公司模块无法启动,并显示以下错误:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2018-11-08 15:58:29.685 ERROR 15324 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured.
因此,似乎CompanyModule和UserModule都试图启动其自己的servlet容器。有人可以帮我进行配置吗?