Java Servlets 注入spring bean

原创 2017年01月03日 17:51:45

Java Servlets 注入spring bean


方法一:HttpRequestHandler

此方法要实现HttpServlet,我们不能直接实现HttpServlet接口,而去实现HttpRequestHandler接口:
package com.xx.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.HttpRequestHandler;

import com.googlecode.jsonrpc4j.JsonRpcServer;

@Component("myServlet")
public class MyServlet implements HttpRequestHandler {

    @Autowired
    private TestManagerImpl testManagerImpl;

    @Override
    public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String requestURI = request.getRequestURI();
        requestURI = requestURI.substring(requestURI.lastIndexOf("/") + 1);
        JsonRpcServer server = testManagerImpl.getServer(requestURI);
        server.handle(request, response);

    }

}

此类被spring托管,我们用@Component("myServlet")注解方法,属性
    @Autowired
    private TestManagerImpl testManagerImpl;
   是我们需要注入的对象。

我们还需要在web.xml中配置此伪servlet:
<servlet>
    <display-name>myServlet</display-name>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>
        org.springframework.web.context.support.HttpRequestHandlerServlet
    </servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>/myurl/*</url-pattern>
</servlet-mapping>

注意:servlet-class的配置类是:
      <servlet-class>
        org.springframework.web.context.support.HttpRequestHandlerServlet
    </servlet-class>


方法二:利用org.springframework.beans.factory.annotation.Configurable 注解与  SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this) 实现


package com.xxx.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import com.googlecode.jsonrpc4j.JsonRpcServer;

@Configurable
public class TestServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;
    @Autowired
    private TestManagerImpl   testManagerImpl;

    @Override
    public void init() throws ServletException {
        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String requestURI = request.getRequestURI();
        requestURI = requestURI.substring(requestURI.lastIndexOf("/") + 1);
        JsonRpcServer server = testManagerImpl.getServer(requestURI);
        server.handle(request, response);

    }
}

属性:
  @Autowired
    private TestManagerImpl   testManagerImpl;
必须是@Autowired注解,此属性是我们需要注入的对象。

 web.xml的配置如下:

  <servlet>
        <servlet-name>TestServlet</servlet-name>
        <servlet-class>com.xxx.controller.TestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TestServlet</servlet-name>
        <url-pattern>/TestServlet/*</url-pattern>
    </servlet-mapping>

标准配置Servlet方式。
        还需一下配置spring xml:

         <context:component-scan base-package="com.xxx"/> 
<context:annotation-config/>
<context:spring-configured/>


效果图:



版权声明:本文为博主原创文章,未经博主允许不得转载[http://blog.csdn.net/doctor_who2004]。

相关文章推荐

Injecting Spring Beans into Java Servlets

If you are working in a Java Web Application and you are using Spring IoC Container in your applicat...
  • gmemai
  • gmemai
  • 2015年09月04日 23:50
  • 270

【Java.Spring.Core】【IoC】Bean依赖注入- Dependencies

依赖注入 - Dependency Injection 当容器创建bean的时候会注入这些依赖。 当为对象提供依赖对象时,代码会比较整洁同时会解耦。对象不需要查找它们的依赖,也不需要知道这些依赖所对应...

为Servlet或普通Java程序注入Spring托管的Bean、数据源

S2SH中都是层层注入,action交给Spring托管。即,往Struts的Action中注入Service,往Service中又注入DAO,这个都是通过配置完成的。 经过对Spring原理和源码...
  • zollty
  • zollty
  • 2013年03月23日 20:34
  • 2320

[java][spring]取得通过配置文件和注解注入的bean、取得当前数据库连接、取得ApplicationContext的方法

[spring]取得通过配置文件和注解注入的bean、取得当前数据库连接、取得ApplicationContext的方法 1、思路: 应用程序启动时使用ApplicationContext...

Java学习笔记38:通过Spring Bean 注入static变量,来设计一套适合测试,开发,生产环境的配置项

这边文章的目的主要是为了在spring开发web项目的时候,让我们的测试,开发,生产环境的配置项 .properties作为配置文件。 我们首先需要建立一个config文件夹,然后创建...
  • initphp
  • initphp
  • 2013年04月22日 15:38
  • 14180

Spring实战2-Bean注入详解的源代码

  • 2015年10月15日 14:02
  • 1.88MB
  • 下载

Spring实战2-Bean注入详解

  • 2015年10月15日 13:56
  • 900KB
  • 下载

HTML5 Server-Sent Events with Java Servlets example

server_sent_event.html Insert title here 获得服务器更新 if(typeof(EventSource)!=="...

spring依赖注入bean

  • 2016年07月19日 09:49
  • 6.73MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Servlets 注入spring bean
举报原因:
原因补充:

(最多只允许输入30个字)