`
gyl868
  • 浏览: 167809 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring web应用下怎么方便的获得bean?

阅读更多
如果我们的系统不是分布式的(在分布式里,我一般自己加载spring的配置文件),不是一般的application,通过自己加载Spring的配置文件的方式。而是一般的web应用,我们通过在web.xml里配置spring的配置文件。我们怎么方便的得到一个Bean的实例呢?当然,web应用启动后,它已经创建好一个WebApplicationContext(这个是接口,其实也是ApplicationContext类型的,因为WebApplicationContext继承自ApplictionContext这个接口)类型的实例对象,通过org.springframework.web.context.support.WebApplicationContextUtils里的
getWebApplicationContext(ServletContext sc)可以得到这个对象的引用(这个就像我们一般的java application下得到ApplicationContext类型的引用一样),我们就可以通过它的getBean方法得到我们的bean实例了。但是这里有个问题getWebApplicationContext(ServletContext sc)这个方法的参数ServletContext代表的是你web应用的环境,也就是说,也就是说web应用环境下特有的。这个时候如果你想得到一个bean的话,必须要有这个ServletContext对象存在,如果你每个类里都写一个方法来接受ServletContext对象,从而得到WebApplicationContext类型实例的引用,之后再得到bean,进行你要的操作,这个是不是很麻烦?这个不是要写很多代码么?我觉得可以把获得bean的这个操作的功能代码放在一个Servlet里,让这个Servlet在web应用启动的时候加载,我们之后把这个Servlet当作普通类使用,调用里面的getBean方法就可以了。这个servlet的代码如下:

package jimmee.cn.edu.zju.pdm.framework.server;


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

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class GetBeanServlet extends HttpServlet
...{

    private static WebApplicationContext context;
   
    public void init() throws ServletException
    ...{
        context=WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
    }
   
    public static Object getBean(String id)
    ...{
        Object bean = context.getBean(id);
       
        return bean;
    }
}



.Spring在web应用

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- Spring的配置 -->
  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/beans.xml</param-value>
    </context-param>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.properties</param-value>
    </context-param>
    <servlet>
        <servlet-name>springInitServlet</servlet-name>
        <servlet-class>
            org.springframework.web.context.ContextLoaderServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>log4jInitServlet</servlet-name>
        <servlet-class>
            org.springframework.web.util.Log4jConfigServlet
        </servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
  <servlet>
    <servlet-name>GetBeanServlet</servlet-name>
    <servlet-class>jimmee.cn.edu.zju.pdm.framework.server.GetBeanServlet</servlet-class>
      <load-on-startup>3</load-on-startup>
  </servlet>
   <!--Spring配置结束  -->
  <servlet-mapping>
    <servlet-name>GetBeanServlet</servlet-name>
    <url-pattern>/servlet/GetBeanServlet</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
使用示例:

假使我有一个Person的类,属性有name和age,在spring配置文件里配置的id为“person”

你在你的servlet或者jsp想得到这个实例的时候,直接这么做就可以了:

Person person=(Person)GetBeanServlet.getBean("person");



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jimmee/archive/2008/03/11/2170915.aspx
分享到:
评论

相关推荐

    Spring框架bean工具,在多线程环境下手动创建bean

    一个Spring框架的bean工具,可以在多线程环境下手动创建bean。使用时请注意在spring配置文件下加入&lt;bean id="springBeanUtils" class="com.hujin.common.util.SpringBeanUtils"/&gt;

    Spring面试题含答案.pdf

    17. 一个 Spring 的应用看起来象什么? 18. 什么是 Spring 的依赖注入? 19. 有哪些不同类型的 IOC(依赖注入)方式? 20. 哪种依赖注入方式你建议使用,构造器注入,还是 Setter 方法注入? 21.什么是 Spring ...

    spring介绍及应用

    Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大...

    实战Acegi_使用Acegi作为基于Spring框架的WEB应用的安全框架

    它既能应用于WEB应用也能应用于非WEB应用。在 本文的示例程序 里,我将演示如何将Acegi应用于WEB应用程序。通过这个例子详细介绍如何配置Acegi的各个组件,同时介绍如何扩展Acegi 使其能够从数据库中读取配置信息

    Spring+3.x企业应用开发实战光盘源码(全)

     第2章:通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速跨入Spring Web应用的世界。  第3章:讲解Spring IoC容器的知识,通过具体的实例详细地讲解IoC概念。同时,对Spring框架...

    实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架

    它既能应用于WEB应用也能应用于非WEB应用。在 本文的示例程序 里,我将演示如何将Acegi应用于WEB应用程序。通过这个例子详细介绍如何配置Acegi的各个组件,同时介绍如何扩展Acegi 使其能够从数据库中读取配置信息。

    Spring技术内幕:深入解析Spring架构与设计原理(第2部分)

     Spring如何在Web环境中集成IoC容器并为Web应用开发提供利器?  我们耳熟能详的MVC模式在Spring中是如何实现的?  Spring MVC如何灵活地集成各种丰富的视图展现方案?  Spring实现远端调用的方案有很多种,你...

    SPRING3技术内幕

     Spring如何在Web环境中集成IoC容器并为Web应用开发提供利器?  我们耳熟能详的MVC模式在Spring中是如何实现的?  Spring MVC如何灵活地集成各种丰富的视图展现方案?  Spring实现远端调用的方案有很多种,你...

    Spring开发指南

    Spring Bean封装机制 Bean Wrapper Bean Factory ApplicationContext Web Context Spring 高级特性 Web 应用与 MVC Spring MVC Spring MVC指南 基于模板的Web表示层技术 Web 应用中模板技术与 JSP 技术的...

    Spring技术内幕:深入解析Spring架构与设计原理

     spring如何在web环境中集成ioc容器并为web应用开发提供利器?  我们耳熟能详的mvc模式在spring中是如何实现的?  spring mvc如何灵活地集成各种丰富的视图展现方案?  spring实现远端调用的方案有很多种,你...

    Spring技术内幕:深入解析Spring架构与设计原理 1/2

     spring如何在web环境中集成ioc容器并为web应用开发提供利器?  我们耳熟能详的mvc模式在spring中是如何实现的?  spring mvc如何灵活地集成各种丰富的视图展现方案?  spring实现远端调用的方案有很多种,你...

    spring-5.2.6.7z

    Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大...

    spring的bean作用域

    讲解了spring的6种作用域:singleton(单例)、non-singleton(也称 prototype),Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean

    精通Spring 4.x 企业应用开发实战

    这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java Web应用开发的难度,同时有效提升应用开发的优雅性。本书是在《精通Spring 3.x――企业应用开发详解》的基础上,历时一年的重大调整改版而成的,延续...

    《精通Spring2.X企业应用开发详解》随书源码1-15章

    动态语言支持 第5篇 展现层应用 第19章 Spring MVC之一 第20章 Spring MVC之二 第21章 集成其他Web框架 第6篇 其他 第22章 Spring应用的测试 第23章 Spring工具类盘点 附录A 各种数据库连接...

    史上最全 69 道 Spring 面试题和答案

    Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? • 轻量:...

    精通Spring 4.x 企业应用开发实战 高清完整版PDF书及随书源码

    这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java Web应用开发的难度,同时有效提升应用开发的优雅性。本书是在《精通Spring 3.x――企业应用开发详解》的基础上,历时一年的重大调整改版而成的,延续...

    Spring框架+Spring工作原理+AOP面向切面编程+JDK代理+Cglib代理

    Spring框架是一个开放源代码的J2EE应用程序框架,是对bean的生命周期进行管理的轻量级容器。 适用:中高级开发 Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork等众多Web框架组合使用,并且可以与Swing...

    SpringSecurity.zip

    它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制...

Global site tag (gtag.js) - Google Analytics