`

【转】在Servlet中访问Spring管理下的bean

阅读更多

提供一个思路,仅做参考
web.xml:

 

<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:springbeans.xml</param-value>
</context-param>
<listener>
       <listener-class>lnx.base.InitPlatformLoader</listener-class></listener>

 

 


InitPlatformLoader.java :

 


package lnx.base;

import javax.servlet.ServletContextEvent;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.WebApplicationContextUtils;

/**
 * 平台初始化类
 */
public class InitPlatformLoader extends ContextLoaderListener {
    protected final Log logger = LogFactory.getLog(getClass());

    public void contextInitialized(ServletContextEvent event) {
        logger.info("初始化平台...");
        super.contextInitialized(event);
        String path = event.getServletContext().getRealPath("/");
        logger.debug("系统部署根路径:" + path);
        Platform.getInstance().setWebPath(path);
        // 初始化Support中Spring的CTX
        ApplicationContext ctx = WebApplicationContextUtils
            .getRequiredWebApplicationContext(event.getServletContext());
        Platform.getInstance().setApplicationContext(ctx);
        logger.info("初始化完成...");
    }
}

 

Platform.java:

 

package lnx.base;

import org.springframework.context.ApplicationContext;
import org.springframework.util.Assert;

/**
* 平台,为各级提供spring的getbean的方法
*
* @author Feng
*/
public class Platform {
    private static Platform ourInstance = new Platform();

    public static Platform getInstance() {
        return ourInstance;
    }

    private Platform() {
    }

    private ApplicationContext applicationContext = null;

    public void setApplicationContext(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }

    /**
     * 根据BeanName获得Bean
     *
     * @param beanName sping配置的id
     * @return 符合条件的bean
     */
    public Object getBean(String beanName) {
        Assert.hasText(beanName);
        return this.applicationContext.getBean(beanName);
    }

    // 平台部署的根物理路径
    private String WebPath;

    /**
     * 获得平台部署的根物理路径
     *
     * @return 根物理路径
     */
    public String getWebPath() {
        return WebPath;
    }

    /**
     * 设置根物理路径
     *
     * @param webPath 根物理路径
     */
    public void setWebPath(String webPath) {
        WebPath = webPath;
    }
}

 


用法:

Platform.getInstance().getBean("bean的name");

 

 

来自:http://bbs.langsin.com/thread-4286-1-89.html 非常感谢!

分享到:
评论

相关推荐

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

    当我们在Servlet环境中工作时,有时需要在Servlet中直接访问由Spring管理的Bean,以便利用Spring提供的服务和功能。以下是如何在Servlet中直接获取Spring框架中的Bean的方法。 首先,我们理解Spring容器,即...

    Spring 管理filter 和servlet

    在`applicationContext.xml`配置文件中,将Filter或Servlet作为bean定义,使其成为Spring管理的一部分。例如: ```xml &lt;bean id="springFilter" class="com.netqin.filter.SpringFilter"&gt; &lt;value&gt;...

    servlet与spring整合例子

    只需在`beans.xml`中声明这些对象,然后在Servlet中声明对应的成员变量并使用`@Autowired`注解,Spring容器会在初始化Servlet时自动将对象注入,避免了手动创建对象和管理对象生命周期的繁琐工作。 4. **Spring MVC...

    spring依赖注入bean

    在 Web 应用中,Spring 通常作为 Servlet 容器的一部分工作,例如 Tomcat 或 Jetty,通过 XML 配置文件或注解来定义 Bean 的配置。然而,在非 Web 的 Java 应用程序,如桌面应用或服务,我们同样可以利用 Spring 的 ...

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

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

    Java中Spring获取bean方法小结

    - **通过`@Configuration`和`@ComponentScan`**:Spring 3.0引入了基于Java的配置,允许在Java类中定义Bean并扫描特定包下的组件。 - **使用`Prototype`作用域的Bean**:如果一个Bean是Prototype作用域,每次请求...

    Spring整合Servlet练习

    3. **创建Spring配置**:在指定的`contextConfigLocation`(例如`spring-servlet.xml`)中,定义Spring的bean,包括控制器、服务层、数据访问层等。 4. **编写Servlet Controller**:在Spring MVC中,Controller...

    spring 与 servlet整合

    在Java Web开发中,Spring框架和Servlet是两个重要的组件,它们在构建现代应用程序时起着核心作用。Spring是一个全面的企业级应用框架,提供了依赖注入、面向切面编程、数据访问、事务管理等功能,而Servlet是Java ...

    spring管理servlet的利器--SimpleServletHandlerAdapter

    在Spring框架中,Servlet的管理是一项重要的任务,它涉及到Web应用的请求处理和业务逻辑的集成。`SimpleServletHandlerAdapter`是Spring MVC中一个关键组件,它为非Spring MVC注解驱动的Servlet提供了一种简单的方式...

    原生Servlet与Spring Controller性能比较--Servlet项目

    在Java Web开发中,Servlet和Spring MVC(主要通过Controller)是两种常见的请求处理机制。本文将深入探讨原生Servlet与Spring Controller在性能方面的差异,并基于一个名为"AbTest"的Servlet项目源码进行分析。 ...

    获得spring里注册Bean的四种方法

    这种方法需要在 Spring 配置文件中添加一个 Bean,例如 `&lt;bean id="serviceLocator" class="com.am.oa.commons.service.ServiceLocator" singleton="true" /&gt;`。然后,我们可以实现 BeanFactoryAware 接口,使用 ...

    第一章 Spring4 简介及获取Bean

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

    详解Spring中bean的作用域

    如果你使用的是 Servlet 2.4 及以上的 web 容器,那么你仅需要在 web 应用的 XML 声明文件 web.xml 中增加下述 ContextListener 即可:&lt;web-app&gt;...&lt;listener&gt;&lt;listener-class&gt;org.springframework.web.context....

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

    Servlet、JSP和Spring MVC是Java Web开发中的三个重要技术,它们在构建动态网页和企业级应用程序中扮演着核心角色。下面将详细解释这三个技术及其相互关系。 **Servlet** 是Java编程语言中的一种接口,由Java ...

    JspServletBean example

    在JSP页面中,我们可以使用EL(Expression Language)或JSTL(JavaServer Pages Standard Tag Library)访问Bean的属性: ```jsp &lt;!-- JSP代码 --&gt; 用户信息 姓名: ${user.name} 年龄: ${user.age} ``` 这里,...

    spring+servlet 入门hello_world

    在IT领域,Spring框架和Servlet技术是Web开发中的重要组成部分,尤其对于初学者而言,"spring+servlet 入门hello_world"是一个极好的起点。这个实例将帮助你理解这两个技术的基础概念以及它们如何协同工作来构建一个...

    Spring Boot 中的Servlet简单使用

    在Spring Boot中,Servlet的使用变得非常简便,因为Spring Boot内置了Servlet容器,如Tomcat或Jetty,这些容器会自动处理Servlet的注册和管理。本文将详细介绍如何在Spring Boot中添加自定义Servlet。 首先,Spring...

    servlet+hibernate+spring实现添删改查

    【标题】"servlet+hibernate+spring实现添删改查"是一个常见的Web开发教程主题,它涵盖了Java后端开发中的三个核心框架:Servlet、Hibernate和Spring。这个主题主要针对初学者,旨在帮助他们理解如何整合这三个技术...

    web.xml文件中配置(servlet, spring, filter, listenr)的加载顺序

    在`web.xml`中配置Spring时,通常通过Listener来加载Spring容器,这样可以在应用程序启动时初始化所有的Spring Bean。 **示例代码:** ```xml org.springframework.web.context.ContextLoaderListener ...

    JSP 开发之servlet中调用注入spring管理的dao

    因此,在可能的情况下,尽量将业务逻辑放在Spring管理的服务层(Service Layer)中,而Servlet主要承担将请求转发至服务层和处理结果的职责。 最后,本篇内容中提到的“WebApplicationContextUtils.get...

Global site tag (gtag.js) - Google Analytics