我们有一个遗产HttpServlet
类是我们应用程序的支柱。此时,该应用程序中没有任何 Spring 库。我们希望引入 Spring,特别是这样我们可以将 Spring-Data 与 Hibernate 结合使用。
我想知道是否有一种方法可以让这个遗留的 Servlet 具有网络感知能力,这样我们就可以注入(inject)请求和 session 范围。特别是,我们希望能够注入(inject) HttpServletRequest
对象放入一些bean中。
我们需要这样做的主要原因之一是我们拥有一个奇怪的 Multi-Tenancy 解决方案。 Hibernate 可以使用AbstractMultiTenantConnectionProvider
的组合来处理 Multi-Tenancy 。和一个 CurrentTenantIdentifierResolver
当使用 Spring-JPA 的存储库时,您将失去对 session 创建的控制。解决这个问题的一种方法是实现 CurrentTenantIdentifierResolver
由于我们的租户标识符部分由请求中传入的内容决定,因此有必要将请求注入(inject)到我们的 CurrentTenantIdentifierResolver
中。实现。
此外,如果能够让 Spring 参与进来,因为它可以在遗留应用程序中提供所有其他好处,那就太好了。
您知道我们如何实现这一目标吗?
最佳答案
您可以定义org.springframework.web.context.ContextLoaderListener
在你的 web.xml 中,它将加载你的 spring 应用程序上下文。
然后,在您的 servlet 代码中,您可以使用 WebApplicationContextUtils.getWebApplicationContext(servletContext)
访问上下文。辅助方法。
在这里查看 Spring 文档: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#web-integration-common
关于java - 如何让遗留的 HttpServlet Spring Web 感知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35047434/