从Servlet 3.0开始,可以通过编程方式注册Servlet实例javax.servlet.ServletContext#addServlet.该类还有一个createServlet分析一些注释并执行依赖注入的方法.如果我不需要注释处理,我想知道是否需要这种方法.我想要一个带有通常构造函数的servlet来通过依赖注入设置所需的依赖项.
@Inject
public MyServlet(SomeDependency sd) { // Constructor
...
}
Run Code Online (Sandbox Code Playgroud)
问题:
createServlet?(new MyServlet())我是Spring的新手,想把spring ioc连接到我的小(测试)web-app.
我有这样的Servlet ProductServlet:
public class ProductServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
private RequestHelper requestHelper;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request);
}
private void processRequest(HttpServletRequest request){
requestHelper.process(request);
}
public RequestHelper getRequestHelper() {
return requestHelper;
}
public void setRequestHelper(RequestHelper requestHelper) {
this.requestHelper = requestHelper;
}
}
Run Code Online (Sandbox Code Playgroud)
和我的web.xml:
<servlet>
<servlet-name>ProductServlet</servlet-name>
<servlet-class>com.epam.productshop.controller.ProductShop</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProductServlet</servlet-name>
<url-pattern>/ProductServlet</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-config.xml
</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
而且我有这样的弹簧配置xml:
<bean id="factory" class="com.epam.productshop.readerfactory.ReaderFactory">
<property …Run Code Online (Sandbox Code Playgroud)