【发布时间】:2012-12-31 17:02:54
【问题描述】:
我有一个带有一些旧 HTTPServlet 的项目,我想要一种方法来管理 Spring 中 Servlet 的创建/生命周期,这样我就可以做一些事情,例如 DI 并通过 Spring/Hibernate 集成传入数据库对象.
首先,我在web.xml 中设置了 Spring 应用程序上下文,如下所示;
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
接下来我在web.xml 中有我的servlet 定义;
<servlet>
<servlet-name>oldHttpServlet</servlet-name>
<display-name>oldHttpServlet</display-name>
<servlet-class>com.package.MyServlet</servlet-class>
</servlet>
在我的 Spring application-context.xml 我想做一些 bean def 如下;
<bean id="oldHttpServlet" class="com.package.MyServlet"></bean>
我认为上面我需要在我的servlet中实现一些接口,将bean定义保持在Spring app-context.xml中,然后对web.xml中的servlet定义进行更改......我'我不确定最简单的更改是什么,因为在 MyServelet.java 端需要担心一些继承,看起来像这样;
class MyServlet extends MyAbstractServlet{
void doStuff(){
//YOu know...
}
}
还有 MyAbstractServlet;
class MyAbstractServlet extends HttpServlet{
doPost(){
//Some post implementation here...
}
}
在 Spring 中包装 MyServlet 并从那里加载而不是通过 web.xml 实例化的最佳方法是什么?
我假设最好的方法是使用 Springs HttpRequestHandler,然后使用 web.xml 中的 HttpRequestHandlerServlet 代替当前的 servlet。但是我不确定如何实现 HttpRequestHandler 接口以使用 myAbstractServlet 中现有的 doPost() 内容......
【问题讨论】:
-
你不能在 Spring 中创建 servlet,它是容器决定何时以及创建多少 sevlet 实例,你可以手动自动装配 servlet 字段 stackoverflow.com/questions/467235/…
-
谢谢,正是我想要的!
标签: java spring tomcat servlets dependency-injection