Spring的模块化Web应用程序

时间:2014-01-26 15:43:13

标签: java spring tomcat web-applications modular

我想创建一个分为以下结构扩展的Web应用程序:

  • 核心
  • 后端A - 取决于核心(可能是后端B)
  • 后端B - 取决于Core&后端A
  • 前端A - 取决于后端A&乙
  • 前端B - 取决于后端A&乙

他们应该在Tomcat中运行。现在我的问题是我仍然希望提供从它所依赖的扩展注入服务的能力。此外,这两个前端应该使用后端扩展中定义的每个服务的相同实例。如果扩展的配置可以完全基于注释(WebApplicationInitializer和@Configuration),那将是一个很酷的功能。

我尝试了什么:

  • 创建Core-和后端 - 扩展,因为WebApplications不起作用,因为它们有自己的ClassLoaders和Contexts,不能注入
  • 将扩展名作为库导出到tomcat并将它们包含到每个Frontend-WebApplication中并不能确保服务相同,基于注释的配置也不起作用

解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

如果您想使用Tomcat,您共享Spring上下文的唯一选择是只设置一个WebApplicaiton(由WebApplicationInitializer初始化)。当然,您仍然可以使用具有自己的@Configuration类的单独模块(也称为jar),但这些配置必须在Web应用程序中合并。

如果您决定使用EAR包装,它会更灵活。然后,根据核心和后端服务,您还可以拥有两个单独的WAR。然后核心和后端服务可以作为父Spring上下文共享(通过使用beanRefContext)和两个war(前端A和前端B)将扩展此上下文