我们有一个遗留HttpServlet
类,它是我们应用程序的支柱。此时,应用程序中没有任何Spring库。我们期待介绍Spring,特别是我们可以将Spring-Data与Hibernate结合使用。
我想知道是否有办法使这个传统的Servlet能够识别Web,因此我们可以注入Request和Session范围。特别是,我们希望能够将HttpServletRequest
对象注入到某些bean中。
我们需要做的一个主要原因是,我们已经实施了一个奇怪的多租户解决方案。 Hibernate可以使用AbstractMultiTenantConnectionProvider
和CurrentTenantIdentifierResolver
的组合来处理多租户。当使用Spring-JPA的存储库时,您将失去对会话创建的控制。解决此问题的一种方法是实现CurrentTenantIdentifierResolver
由于我们的租户标识符部分由请求中的内容确定,因此有必要将请求注入我们的CurrentTenantIdentifierResolver
实现。
此外,让Spring参与其可以在传统应用中提供的所有其他好处将会很棒。
你知道我们怎么能做到这一点吗?
答案 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