`

servlet调用spring容器中的bean,的两种方式一种注解一种xml配置

 
阅读更多

最近由于项目中出现了Servlet调用Spring的bean,由于整个项目中所有的bean均是注解方式完成,如@Service,@Repository,@Resource等,但是Spring的容器管理是不识别Servlet和filter的,所以无法使用注解方式引用,在网上查了资料后看到如下的代码:
第一种方式:在Servlet的init方法中来完成bean的实例化,初始化后可以在servlet中调用bean中的方法

  1. WebApplicationContext cont = WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext()); 
  2. ts=(TestService)cont.getBean("testService")//ts为已经声明的类变量,括号内的名字默认为bean的类名,第一个字母小写,也可以设置唯一名称,如@Service(value="testService")
复制代码

第二种方式:直接在Servlet的doPost方法中获取,代码如下

  1. WebApplicationContext cont = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
复制代码

不过在我的项目中使用上面任何一种都无法得到任何bean,原因是上面的两种方式只对xml配置的bean有效,无法获取到注解的bean,最后在网上看到一篇关于“Spring对注解(Annotation)处理源码分析——扫描和读取Bean定义”的文章,才终于解决了这个问题,代码如下:
代码1:Service接口

  1. package com.test.web.service;
  2. public interface ITestService {
  3. public void test();//测试方法
  4. }
复制代码

代码2:实现接口并使用注解方式

  1. package com.test.web.service.impl;
  2. import org.springframework.stereotype.Service;
  3. import com.taokejh.web.test.ITestService;
  4. //此处的注解部分可以给出唯一名称,如@Service(value="testServiceImpl"),等同于xml配置中bean的id
  5. @Service
  6. public class TestServiceImpl implements ITestService {
  7. @Override
  8. public void test() {
  9. System.out.println("测试打印");
  10. }
  11. }
复制代码

代码3:在Servlet中获取注解的bean并调用其测试方法

  1. AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); 
  2. ctx.scan("com.test.web.service.*"); 
  3. ctx.refresh(); 
  4. TestServiceImpl service = ctx.getBean(TestServiceImpl.class);//此处也可以使用ctx.getBean("testServiceImpl") 
  5. service.test();
复制代码

这样就可以在Servlet或者filter中调用Spring注解方式的bean,其实整个过程就是模拟了SpringMVC在初始化的时候扫描组件包后完成对所有bean的注册并存放至管理容器中。如果大家有更好的解决办法,希望不吝赐教!

分享到:
评论

相关推荐

    servlet与spring整合例子

    在Servlet与Spring整合时,首先我们需要创建一个Spring配置文件(如`beans.xml`),在这个文件中定义bean的配置。然后在Web应用的`web.xml`中,通过`ContextLoaderListener`配置Spring上下文,使得在应用启动时...

    Java中Spring获取bean方法小结

    在Java开发中,Spring框架是不可或缺的一部分,它提供了一个强大的依赖注入(DI)和面向切面编程(AOP)的容器。Spring的核心在于其BeanFactory和ApplicationContext,它们使得对象的管理和装配变得简单。这里我们将...

    Web项目中获取SpringBean与在非Spring组件中获取SpringBean.pdf

    总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...

    dwr与spring集成的方式

    ### dwr与spring集成的方式 #### 一、引言 DWR(Direct Web Remoting)是一种简化Ajax开发的Java框架,允许在客户端直接调用服务器...无论是哪一种方式,都需要确保Spring容器的正确配置以及DWR Servlet的正确启动。

    dwr+spring 注解方式

    - 配置好后,需要将DWR的Servlet添加到Web应用的Servlet容器中,如Tomcat。 - 使用DWR提供的调试工具或者自定义JavaScript代码来测试远程调用是否正常。 通过以上步骤,我们可以实现DWR与Spring的无缝结合,利用...

    spring与flex(blazeds)注解配置

    这些XML文件将定义Spring容器中的bean和相关配置。 接着,我们看到`springSecurityFilterChain`过滤器,它是Spring Security的组成部分,用于拦截所有请求并应用安全策略。`DelegatingFilterProxy`类是一个代理过滤...

    webservice cxf spring整合返回list,bean,string,json,xml项目完整实例

    【标题】:在Java EE环境中,使用Apache CXF与Spring框架整合实现Web服务,返回List、Bean、String、JSON及XML的完整项目实例 【描述】:本项目旨在展示如何在Java企业级应用(Java EE)中,通过Apache CXF框架创建...

    spring管理servlet的利器--SimpleServletHandlerAdapter

    `SimpleServletHandlerAdapter`是Spring MVC中一个关键组件,它为非Spring MVC注解驱动的Servlet提供了一种简单的方式来与Spring容器进行集成。这篇文章将深入探讨`SimpleServletHandlerAdapter`的工作原理及其在...

    配置整合DWR3.0和Spring2.5使用annotation注解

    在本文中,我们将探讨如何将Direct Web Remoting (DWR) 3.0与...通过这种方式,DWR 3.0与Spring 2.5的整合使用注解配置简化了开发流程,使得Java后端的方法可以直接在客户端JavaScript中调用,实现前后端的无缝交互。

    Spring系列面试题129道(附答案解析)

    在该容器中,对象定义(通过配置文件或注解)被创建,并通过依赖注入的方式自动装配依赖项。 IOC容器通过管理对象的创建和它们之间的依赖关系,使得对象之间的耦合度降低。 72、IOC的优点是什么? IOC(控制反转)...

    第一章 Spring4 简介及获取Bean

    在Spring框架中,Bean是被Spring管理的对象,它们可以通过XML配置、注解或者Java配置类来定义。Spring使用IoC容器来管理和实例化这些Bean。获取Bean主要有以下几种方式: 1. **通过Bean的ID**:使用`...

    零xml配置项目

    【标题】"零XML配置项目"是针对Spring框架的一种实现方式,它强调通过Java代码而非XML文件来配置和管理应用程序的组件。这种做法使得代码更加简洁、可读性更强,并且降低了XML配置带来的维护难度。 在传统的Spring...

    Servlet JSP Spring MVC初学指南(alin书签).pdf

    6. **Spring Bean管理**:理解IoC(Inversion of Control)和DI(Dependency Injection),以及如何使用XML或注解配置Spring Bean。 7. **数据绑定与表单验证**:Spring MVC如何自动将表单数据绑定到模型对象,以及...

    SpringBoot整合Servlet的两种方式.docx

    Spring Boot提供了一种简洁的方式来集成Servlet,使得我们不再需要传统的web.xml配置文件。本文将详细介绍两种整合Servlet的方法。 1. **通过注解扫描完成Servlet组件注册** 在这种方法中,我们首先创建一个新的...

    外部接口调用 使用spring4+hessian4实例

    Spring4则扮演了管理和协调这些调用的角色,提供了一种优雅的方式去配置和管理服务。 首先,理解Spring4框架的核心概念是至关重要的。Spring是一个全面的企业级应用开发框架,它提供依赖注入(Dependency Injection...

    Spring注解驱动开发.pdf

    - **作用**:`AnnotationConfigApplicationContext`是Spring框架提供的一种基于注解的配置方式,用于替代XML配置。 - **使用**:通过这种方式可以将配置类作为Java类来编写,并通过`@Configuration`注解标记。这种...

    Spring注解驱动开发实战-servlet

    在Spring框架中,注解驱动的开发极大地简化了Java应用程序的构建,特别是在处理Servlet相关的功能时。本实战指南将深入探讨如何利用Spring的注解来实现高效、灵活的Servlet容器集成。 首先,让我们来理解`...

    SpringMVC 全注解实现 servlet3.0以上的容器支持.docx

    ### SpringMVC全注解实现Servlet 3.0以上容器支持 #### 一、SpringMVC入门 **1.1 Request的处理过程** 在Web开发领域,每一个用户的交互行为都会触发一个HTTP请求(Request),而SpringMVC框架则是管理这些请求...

    Java获取Bean的几种方式.pdf

    在Java开发中,特别是在Spring框架下,管理Bean是核心任务之一。本文主要探讨了Java获取Bean的多种方式,尤其在Spring Boot和IOC(控制反转)环境下。这些方式可以帮助开发者便捷地从Bean容器中检索和使用所需的Bean...

    Spring MVC入门 XML版本+注释版本

    这个入门教程将涵盖XML配置和注解配置两种方式,帮助初学者理解如何在Spring MVC中搭建基本的"Hello, World!"应用。 首先,我们从XML配置开始。在Spring MVC中,`DispatcherServlet`是入口点,它负责分发HTTP请求到...

Global site tag (gtag.js) - Google Analytics