我正在尝试将扩展 HttpServlet 的 FooServlet 与位于同一项目中的 ApplicationContext 连接起来。
应用程序上下文已被 Wicket Servlet 使用
它适用于
servletContext = this.getServletContext();
wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
(IMyBean)wac().getBean("myServiceBean")
现在我尝试避免在我的代码(WebApplicationContextUtils)中显式使用 Spring 类,因为它不是 IoC 方式。
Wicket Servlet 与 web.xml 中的应用程序上下文相关联
<servlet>
<servlet-name>ExampleApplication</servlet-name>
<servlet-class>org.apache.wicket.protocol.http.WicketServlet</servlet-class>
<init-param>
<param-name>applicationFactoryClassName</param-name>
<param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
我找到了 Spring HttpServletBean 类,但我不知道它是否适用于我的案例
最佳答案
我找到了一种在我的 HttpServlet 中注入(inject) Bean 的方法( 注意: 我不需要 Presentation View,否则还有更高级的 Spring 类)
将 ContextLoaderListener 添加到 web.xml 以便加载 Spring 的根 WebApplicationContext
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
使用 Springs 配置 Servlet HttpRequestHandlerServlet类(class)
<servlet>
<servlet-name>FooServlet</servlet-name>
<display-name>Foo Servlet</display-name>
<servlet-class>
org.springframework.web.context.support.HttpRequestHandlerServlet
</servlet-class>
</servlet>
让你的 Servlet 实现 org.springframework.web.HttpRequestHandler界面
将您的 Servlet 定义为 ApplicationContext 中的 Bean(beanID 必须与“servlet-name”相同)。
现在可以以 Spring DependencyInjection 方式注入(inject)所有必需的 Bean,而无需查找依赖项。
关于spring - 如何在 web.xml 中将 HttpServlet 与 Spring Application Context 连接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1866953/