`
rc123
  • 浏览: 27635 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

使用spring的autowried在servlet中注入bean

阅读更多
前提:已经配送好spring,在struts中用@Autowired可以正常注入。新建servlet,使用@Autowired发现不能注入bean的情况下,使用以下方法:
一、写个基础servlet,此servlet用于代理查找相应的servlet
public class DelegatingServletProxy extends GenericServlet{

	private static final long serialVersionUID = -4708556750740588204L;
	private String targetBean;
    private Servlet proxy;
    
	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		proxy.service(req, res);
	}

	@Override
    public void init() throws ServletException {
        this.targetBean = getServletName();
        getServletBean();
        proxy.init(getServletConfig());
    }

    private void getServletBean() {
        WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
        this.proxy = (Servlet) wac.getBean(targetBean);
    }
	
}


二、
1、在具体的servlet中加入@Component("")
2、用@Autowired注入具体的service层bean类,如下创建了A和B servlet。
@Component("A")
public class A extends HttpServlet {

@Autowired
private ArticletypeService articletypeService;
.............
}

@Component("B")
public class A extends HttpServlet {

@Autowired
private ArticletypeService articletypeService;
.............
}



3、修改web.xml
  把A、BSservlet的servlet-class类路径改成代理servlet,既DelegatingServletProxy的路径。
<!-- 代理servlet不需要
  <servlet>
    <servlet-name>DelegatingServletProxy</servlet-name>
    <servlet-class>com.web.DelegatingServletProxy</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>DelegatingServletProxy</servlet-name>
    <url-pattern>/servlet/DelegatingServletProxy</url-pattern>
  </servlet-mapping>
   -->
  <servlet>
    <servlet-name>A</servlet-name>
    <servlet-class>com.web.DelegatingServletProxy</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>B</servlet-name>
    <servlet-class>com.web.DelegatingServletProxy</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>A</servlet-name>
    <url-pattern>/servlet/A</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>B</servlet-name>
    <url-pattern>/servlet/B</url-pattern>
  </servlet-mapping>

4、在servlet中bean注入成功



以上内容不实用代理和@Autowired写法为:
public class MetaInitServlet extends HttpServlet {

private SysParametersService sysParametersService;

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

.............
.............

}

public void init() throws ServletException {
		WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
		sysParametersService = (SysParametersService) context.getBean("SysParametersService");
	}

}

分享到:
评论

相关推荐

    Spring的注入在Servlet中使用

    Spring的注入在Servlet中使用:在Servlet中使用Spring注入的信息,需要WebApplicationContext这个专门为Web准备的应用上下文

    spring依赖注入bean

    在 Java 应用中使用 Spring,我们需要创建一个 Spring 上下文(ApplicationContext)来加载 Bean 的定义。这个上下文将负责创建和管理 Bean,以及执行依赖注入。通常,我们可以使用 `ClassPathXmlApplicationContext...

    用Spring注入Servlet文件 实现注入set

    使用spring的依赖注入,来实现servlet中注入dao层

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    然而,在某些情况下,我们可能需要在非Spring注解的类中访问Spring容器中的Bean,或者在这些类中使用YAML配置文件中的配置信息。本篇将详细介绍如何在这样的场景下实现这一目标。 首先,让我们来理解如何在非Spring...

    详解Spring 中如何控制2个bean中的初始化顺序

    因此,在使用 DependsOn 注解时,需要了解 Spring 中 bean 的加载过程,以免出现错误。 其他实现方式 除了上述两种方式外,还有其他方式可以控制 2 个 bean 的初始化顺序。例如,可以使用 Spring 的 @Order 注解来...

    spring动态向容器中添加bean和删除指定bean.md

    spring动态向容器中添加bean和删除指定bean,不需要重启应用

    通过@Autowired注解注入bean的顺序,以及@bean注入.rar

    让我们深入探讨这两个注解的工作原理,以及它们在注入bean时的顺序。 `@Autowired`注解由Spring提供,用于自动装配bean的依赖。当我们在字段、构造函数、方法或方法参数上使用`@Autowired`时,Spring会自动查找与所...

    关于spring boot中几种注入方法的一些个人看法

    @Bean 可以使用在方法上,以便将该方法的返回值转换为一个 Spring bean。 在 Spring Boot 中,以上几种注入方法都是非常重要的,它们可以帮助我们在编写 Spring Boot 应用程序时,使代码更加简洁、灵活和可维护。

    Spring定义bean的三种方式和自动注入

    在上述例子中,`Student`类中的`teacher`字段使用`@Autowired`注解,Spring会自动找到`Teacher`类型的Bean进行注入。 总之,Spring提供了多种方式来定义和管理Bean,从XML到注解再到Java配置,使得开发更加灵活高效...

    在Servlet直接获取Spring框架中的Bean.docx

    总之,在Servlet中直接获取Spring的Bean可以帮助简化代码,减少重复的工作,并利用Spring的依赖注入能力。然而,这种方式应该谨慎使用,因为它可能破坏了依赖注入的初衷,使得代码更难测试和维护。在可能的情况下,...

    spring bean XML配置入门

    在Spring中,一个Bean通常代表应用中的一个对象,这些对象由Spring容器创建、管理并提供给其他组件使用。Spring容器通过XML配置文件或注解来定义Bean及其相互关系。 3. **XML配置文件**: "spring-beans"是Spring...

    spring bean的生命周期

    - **属性注入**:Spring会将依赖注入到Bean中,包括值注入(value,ref)和集合注入(list,map,props,set)。 - **初始化回调**:Spring支持两种类型的初始化回调方法,即`@PostConstruct`注解的方法和在XML中...

    Spring-注入依赖,AOP,自动注入Bean

    在Spring框架中,依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)是两大核心特性,同时自动注入Bean也是Spring管理对象的一种常见方式。让我们深入探讨这些概念。 首先,...

    spring static静态方法里面注入bean空指针解决

    然而,静态方法和静态变量不参与Spring的生命周期管理,因此,尝试在静态字段或静态方法中直接使用`@Autowired`注入Bean会导致空指针异常,因为Spring容器不会初始化静态成员。 **解决方法1:使用@Component和非...

    Spring boot将配置属性注入到bean类中

    在Spring Boot中,属性注入是核心特性之一,它使得我们可以方便地将配置文件中的参数值注入到Bean类的属性中,从而实现灵活的配置管理。本文将详细讲解如何利用`@ConfigurationProperties`注解以及与`@...

    Spring高级应用之注入嵌套Bean编程开发技术共1页

    在Spring框架中,高级应用涉及了众多复杂但强大的特性,其中注入嵌套Bean编程开发技术是提高代码组织和模块化的重要手段。嵌套Bean是指在一个Bean定义中引用或包含其他Bean,这种结构允许我们创建更复杂的对象图,...

    Spring - -setter方式 向bean中注入各种类型的值

    2. **字符串注入**:在XML配置文件中,你可以直接指定字符串值,或者在Java配置类中使用`@Value`注解。例如,`@Value("张三")`可以将"张三"注入到一个`setName(String name)`的方法中。 3. **其他bean的注入**:...

    消息队列监听器无法注入bean的问题解决

    在Spring中,我们通常使用`ApplicationContext`来获取bean,或者在有`@Autowired`注解的字段和方法上进行自动注入。如果`BeanUtil`没有正确地处理bean的获取,也可能导致问题的发生。 `system.properties`是系统...

    17. Spring Boot普通类调用bean【从零开始学Spring Boot】

    总结来说,Spring Boot允许开发者轻松地在普通类中使用bean,通过Spring容器的强大功能来管理对象和依赖。通过理解并熟练运用上述知识点,可以更高效地开发Spring Boot应用。博客"17. Spring Boot普通类调用bean【从...

Global site tag (gtag.js) - Google Analytics