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]。 举报

相关文章推荐

Java Servlets 注入spring bean

Java Servlets 注入spring bean 方法一:HttpRequestHandler 此方法要实现HttpServlet,我们不能直接实现HttpServlet接口,而去实现Htt...

Spring注入Bean

我们先定义一个接口Description.java: view plain package com.spring.di;      public interface...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Spring bean的三种注入方式

Spring的一个重要原理就是IOC(Inverse Of Control),即控制反转。IOC就是一种将组件依赖关系的创建和管理置于程序外部的技术,在Spring中Bean组件的实例化和依赖关系的管...

Spring注解注入bean

1@Autowired 默认根据类型找bean,接口直接找实现类 加@Qualifier 根据bean名称,id来找bean。如@Autowired@Qualifier("userService“”)...

spring属性注入

spring常用的注入

Spring的几种注入方式

通过set方式注入bean的定义:package com.ydoing.demo; public class Person { private Computer computer; p...

Spring之IOC的注入方式总结

在定义了 JavaBean 装载信息之后需要对其赋值。一个 JavaBean 的赋值可以通过构造方法完成初始化,或者通过 set()方法初始化和改变属性值。下面分别介绍如何在 XML 中配置 Java...

Spring之Bean的创建和装配

前言 Spring创建Bean 声明Bean 注入Bean的属性 构造器注入 setter方法注入 装配集合 装配空值前言最近在重温Spring,因此决定写一系列的关于Spring学习的博客,一是为了...

Spring bean 集合注入

package spring.domain; /**  * 雇员类  * @author Administrator  *  */ public class Employee { pri...

spring Filter中注入bean

遇到朋友在filter中用@autowired注入,得到的对象是null,于是根据自己项目中的使用,提供了下列解决方法。 1.web.xml中配置 org.springframe...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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