Jhonney的專欄

             ----人見人愛
          隨筆 - 49, 文章 - 1, 評論 - 23, 引用 - 0

          Spring學(xué)習(xí)筆記

          1.通過ContextLoaderListener創(chuàng)建根級applicationContext,初始化應(yīng)用上下文

          ,而DispatcherServlet只是在一個web應(yīng)用中的一個總的控制器,在此控制器中

          ,根據(jù)ContextLoaderListener創(chuàng)建的應(yīng)用上下文來創(chuàng)建以DispatcherServlet名

          字-servlet.xml的web層應(yīng)用上下文。具體可以參見web.xml中對此的英文解釋。
          如果想換另外的名字話則要在web.xml的DispatcherServlet的屬性中進行設(shè)置,

          否則系統(tǒng)只會查找默認的[servletName]-servlet.xml,并將其中的beans讀入

          beanFactory。它們的初始化bean工廠的過程可以參考網(wǎng)上關(guān)于spring源碼學(xué)習(xí)的

          一篇文章。

          2.在DispatcherServlet初始化handlerMapping的時候,有個參數(shù)可以進行設(shè)置,

          如autoDetectHandlerMapping,如果它為true的話,程序自動在容器的

          BeanFactory中查找handerMapping的實例,然后存入HandlerMappings中,

          BeanNameUrlHandlerMapping在初始化時將以"/"為首的bean和url一起讀入本實例

          中的map中,其他的mapping方法有各自的做法,差不多類似。

          3.以默認的handlerMapping為映射器的控制器,它們的bean是name,且它們的

          name中一定要以"/"為首,否則控制器找不到,而以simpleUrlHanlerMapping為映

          射的控制器,它們的bean一定要用id。

          4.在建立application上下文時,會建立beanfactroy,然后對此默認的

          beanfactory加入BeanPostProcessor的具體實現(xiàn)

          ApplicationContextAwareProcessor,這樣在beanfactroy中的所有bean初始化時

          都將回調(diào)ApplicationContextAwareProcessor,在這個類中篩選了一些接口的繼

          承bean,對這些bean進行相應(yīng)的注入,e.g setApplicationContext()中又定義

          了初始化initApplication()的方法,然后繼續(xù)完成bean的初始化。

          5.spring中的SimpleFormController方法中,如果通過bean定義加入

          commandClass,則不需要在SimpleFormController的繼承方法formBackingObject

          ()中加入創(chuàng)建commandclass的代碼,這個方法的目的就是在request在post提交

          的時候創(chuàng)建表單對象,并且自動提取和設(shè)置表單對象的值

          6.web.xml中的配置參數(shù),比如:
          ?<init-param>
          ??<param-name>contextConfigLocation</param-name>
          ???????? <param-value>/WEB-INF/hrms-servlet.xml</param-value>
          ??? </init-param>
          ?? <init-param>
          ?? <param-name>namespace</param-name>
          ?? <param-value>tttttttttttttttt</param-value>
          ??????? </init-param>
          這個設(shè)置可能是通過下面代碼進行綁定的,主要過程是,將HttpServletBean中的

          初始化時將servlet設(shè)置成bean,通過BeanWrapperImpl實現(xiàn)。根據(jù)web.xml中的數(shù)據(jù)進行動態(tài)設(shè)定serlet的值

          。而根ApplicationContext中則是通過去讀取配置文件,然后賦值進行的。
          PropertyValues pvs = new ServletConfigPropertyValues(getServletConfig

          (), this.requiredProperties);
          ???BeanWrapper bw = new BeanWrapperImpl(this);
          ???ResourceLoader resourceLoader = new

          ServletContextResourceLoader(getServletContext());
          ???bw.registerCustomEditor(Resource.class, new

          ResourceEditor(resourceLoader));
          ???initBeanWrapper(bw);
          ???bw.setPropertyValues(pvs, true);

          posted on 2007-03-16 00:08 Jhonney 閱讀(272) 評論(0)  編輯  收藏 所屬分類: spring


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 洱源县| 驻马店市| 中西区| 三明市| 鞍山市| 广西| 鄂伦春自治旗| 陈巴尔虎旗| 彭山县| 汉阴县| 友谊县| 桦川县| 宿州市| 灵川县| 靖安县| 五常市| 石楼县| 甘肃省| 拉孜县| 潍坊市| 抚顺县| 泽普县| 团风县| 乌兰浩特市| 明光市| 米泉市| 南阳市| 台南市| 宁德市| 南江县| 灌云县| 高州市| 西盟| 和龙市| 紫金县| 吴江市| 景德镇市| 楚雄市| 永胜县| 江北区| 临武县|