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

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

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

    samtiger


    QQ:418148757
    Name:yangchuan
    數據加載中……
    關于spring2與struts1整合 的DelegatingActionProxy 委托方式及一些問題思考
         spring與struts結合,很多人都說必須要在struts-config.xml配置文件里加上org.springframework.web.struts.ContextLoaderPlugIn插件,其實這個說法不一定,spring是先查找的struts-config.xml里的配置,如果沒有,再去查找web.xml里邊的配置的。所以我們只需要配置web.xml就可以了??纯创a,從DelegatingActionProxy 類中查看有如下代碼:
    protected Action getDelegateAction(ActionMapping mapping) throws BeansException {
            WebApplicationContext wac 
    = getWebApplicationContext(getServlet(), mapping.getModuleConfig());
            String beanName 
    = determineActionBeanName(mapping);
            
    return (Action) wac.getBean(beanName, Action.class);
        }
    上邊的代碼是需要一個spring的應用環境對象,繼續察看getApplicationContext的代碼,如下:
    protected WebApplicationContext getWebApplicationContext(
                ActionServlet actionServlet, ModuleConfig moduleConfig) 
    throws IllegalStateException {

            
    return DelegatingActionUtils.findRequiredWebApplicationContext(actionServlet, moduleConfig);
        }
    好,跟蹤到DelegatingActionUtils.findRequiredWebApplicationContext方法,如下:
    public static WebApplicationContext findRequiredWebApplicationContext(
                ActionServlet actionServlet, ModuleConfig moduleConfig) 
    throws IllegalStateException {

            WebApplicationContext wac 
    = getWebApplicationContext(actionServlet, moduleConfig);
            
    // If no Struts-specific context found, fall back to root context.
            if (wac == null{
                wac 
    = WebApplicationContextUtils.getRequiredWebApplicationContext(actionServlet.getServletContext());
            }

            
    return wac;
        }

    上邊的代碼(if(wac==null))說明當struts配置中沒有配置spring插件就回到web.xml配置中去找,你可以繼續跟蹤代碼就可以找到他是怎么創建applicationContext對象的。


    問題2 :我們知道struts1里面的action是非線程安全的,(關于這一點,你可以查看struts的源代碼,可發現struts的在RequestProcessor里利用了享元模式來管理每一個action的,而RequestProcessor對象是存儲在servletContext里面的),我們用spring的DelegatingActionProxy 類作代理,所以是由 spring去創建具體的action類,這樣創建的action應該也是非線程安全的
    因此,如果我們向用ioc的方式往action里注入一些屬性的話,想必會帶來并發訪問沖突問題,故,我們是不是需要在spring里配置action的bean的時候應該配置成非單例模式 (即singleton="false")呢;
    問題3:在spring中bean的默認配制都是singleton="true"的,盡管我們把action配置成非一個實例,但是在我們的業務邏輯bean里我們還是沒有逃脫多線程并發訪問時帶來的安全隱患,因此,在我們編寫的業務邏輯層bean的時候,是不是也需要注意使用兩種方式來解決這個問題呢,我們要不就不要在該bean內寫類屬性(字段),要不就是在spring配置里將其配置成singleton="false"。

    總結上述,其實我們在實現ssh1框架的時候,只要注意在action 里和業務邏輯bean里等地方都盡量取消類字段,就可以避免多線程并發訪問的問題

    posted on 2008-01-25 17:42 sam.chuan.yang 閱讀(3223) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 国产午夜不卡AV免费| 老湿机一区午夜精品免费福利| 中文字幕亚洲乱码熟女一区二区| 国产成人麻豆亚洲综合无码精品| 另类图片亚洲校园小说区| 四虎影视无码永久免费| 成年人网站免费视频| 小小影视日本动漫观看免费 | 免费A级毛片无码A∨免费| 最近的免费中文字幕视频| 国产免费AV片无码永久免费| 亚洲国产天堂在线观看| 亚洲乱码日产精品一二三| 中国一级特黄的片子免费 | 妞干网免费观看视频| 亚洲成a人片在线观看无码| 亚洲日本一线产区和二线产区对比| 毛片免费vip会员在线看| 亚洲av成本人无码网站| 97人妻无码一区二区精品免费| 中中文字幕亚洲无线码| 免费一级毛片无毒不卡| 亚洲精品和日本精品| 2020久久精品亚洲热综合一本| 天天干在线免费视频| 一级做受视频免费是看美女| 最近2019中文字幕免费看最新| 亚洲国产精品精华液| 免费无码A片一区二三区| 久久久亚洲裙底偷窥综合| 一个人看的www免费在线视频| 无码欧精品亚洲日韩一区| 老司机精品免费视频| 日木av无码专区亚洲av毛片| 国产在线一区二区综合免费视频| 亚洲视频免费一区| 国产无遮挡吃胸膜奶免费看| 久久亚洲中文字幕无码| 亚洲韩国精品无码一区二区三区| 精品国产一区二区三区免费| 亚洲性线免费观看视频成熟|