如何使遗留HttpServlet Spring Web感知

时间:2016-01-27 20:31:31

标签: java spring hibernate spring-mvc servlets

我们有一个遗留HttpServlet类,它是我们应用程序的支柱。此时,应用程序中没有任何Spring库。我们期待介绍Spring,特别是我们可以将Spring-Data与Hibernate结合使用。

我想知道是否有办法使这个传统的Servlet能够识别Web,因此我们可以注入Request和Session范围。特别是,我们希望能够将HttpServletRequest对象注入到某些bean中。

我们需要做的一个主要原因是,我们已经实施了一个奇怪的多租户解决方案。 Hibernate可以使用AbstractMultiTenantConnectionProviderCurrentTenantIdentifierResolver的组合来处理多租户。当使用Spring-JPA的存储库时,您将失去对会话创建的控制。解决此问题的一种方法是实现CurrentTenantIdentifierResolver由于我们的租户标识符部分由请求中的内容确定,因此有必要将请求注入我们的CurrentTenantIdentifierResolver实现。

此外,让Spring参与其可以在传统应用中提供的所有其他好处将会很棒。

你知道我们怎么能做到这一点吗?

1 个答案:

答案 0 :(得分:2)

您可以在web.xml中定义org.springframework.web.context.ContextLoaderListener,这将加载您的spring应用程序上下文。

然后,在servlet代码中,使用WebApplicationContextUtils.getWebApplicationContext(servletContext)辅助方法访问上下文。

在这里看一下Spring文档: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#web-integration-common