spring - 如何在 web.xml 中将 HttpServlet 与 Spring Application Context 连接起来?

标签 spring

我正在尝试将扩展 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/

相关文章:

spring - 当我尝试在 Spring STS 中创建 Web 服务客户端时出现错误

java - Spring @Transactional 注解中 readOnly 属性的正确位置

mysql - Spring MVC 中 Controller 操作之间的文件数据传播

java - 如何在 Spring 应用程序中使用非 jta-data-source 将选择查询重定向到复制数据库

javascript - `model.addAttribute` 从 Controller 发送到 JSP 的数据类型是什么

java - 错误 : java: package org. springframework.boot 不存在

java - 如何从JPA元素集合中的子元素获取父元素?

java - 如何在 Eclipse 中查看 Spring Framework Javadoc?

java - 与 Hibernate 4.3.1 兼容的 Javassist 版本是什么

java - 可以在 Java 中使用 String 数据类型作为时间戳吗?