我正在开发一个在Spring Boot(没有web.xml)和WebSphere(使用web.xml)上运行的应用程序。有一个控制器需要注入DispatcherServlet。虽然它适用于Spring引导环境,但在WebSphere上失败了 - 没有找到DispatcherServlet类型的bean。
在web.xml中,我使用父上下文(Context Loader Listener)与中间层和几个具有各自上下文的调度程序。其中一个包含这样的控制器(等等)。
为什么它不起作用?我的第一个假设是Spring Boot首先创建并注册DispatcherServlet然后扫描控制器,而当使用web.xml运行时,它以相反的顺序发生,因此在从上下文访问DispatcherServlet之前实例化控制器。
我该如何解决这个问题?
答案 0 :(得分:0)
您无法直接注入DispatcherServlet,因为它未在Spring Context(例如XmlWebApplicationContext)中注册。 但是您可以扩展DispatcherServlet,将链接存储到静态字段(在constuctor调用中)。您可以在代码中的任何位置链接此链接。
其他方式 - 如果您创建DispatcherServlet"手动" - 您可以在application-context.xml中将DispatcherServlet注册为bean。