<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 14, comments - 15, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Spring web應用下方便的獲得bean(轉)

    Posted on 2009-01-06 13:27 析木 閱讀(1111) 評論(0)  編輯  收藏 所屬分類: Spring

            如果我們的系統不是分布式的(在分布式里,我一般自己加載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 com.nstc.cti.event;

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

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

    public class GetBean 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;
        }

    }

    web.xml配置里:
    <?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>
        
    <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>GetBeanServlet</servlet-name>
        
    <servlet-class>com.nstc.cti.event.GetBean</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>

    紅色也可以為:

        <listener>
            
    <listener-class>
                org.springframework.web.context.ContextLoaderListener
            
    </listener-class>
        
    </listener>



    使用示例:

    假使我有一個Person的類,屬性有name和age,在spring配置文件里配置的id為“person”

    你在你的servlet或者jsp想得到這個實例的時候,直接這么做就可以了:

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


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    我要啦免费统计
    主站蜘蛛池模板: 成人免费男女视频网站慢动作| 亚洲毛片无码专区亚洲乱| 国产大片免费网站不卡美女| 黄色毛片免费网站| 亚洲第一第二第三第四第五第六| 色噜噜亚洲精品中文字幕| 午夜视频免费观看| 亚洲人成在线免费观看| 97在线免费视频| 美女黄色毛片免费看| 亚洲伊人久久大香线蕉AV| 亚洲精品高清国产麻豆专区| 亚洲色成人网站WWW永久| 亚洲成aⅴ人片久青草影院| 美女被免费视频网站a| 亚洲人成综合在线播放| 久久亚洲精品无码AV红樱桃| 亚洲人成色7777在线观看| 亚洲精品高清在线| 又爽又高潮的BB视频免费看| 在线不卡免费视频| 久久精品女人天堂AV免费观看| 88av免费观看入口在线| 国产精品免费高清在线观看| 中文字幕av免费专区| 一本一道dvd在线观看免费视频| 亚洲av无码成人精品国产 | 大桥未久亚洲无av码在线| 亚洲娇小性色xxxx| 亚洲三级视频在线| 亚洲国产高清视频在线观看| 亚洲精品国产福利在线观看| 亚洲最大的视频网站| 亚洲免费人成视频观看| 亚洲精品自拍视频| 亚洲大香人伊一本线| 亚洲情A成黄在线观看动漫软件| 国产AV旡码专区亚洲AV苍井空 | 国产免费不卡视频| 青青青国产在线观看免费| 无码日韩人妻av一区免费|