Jhonney的专栏

   ----人见人爱
随笔 - 49, 文章 - 1, 评论 - 23, 引用 - 0
数据加载中……

Spring学习笔记

1.通过ContextLoaderListener创建根级applicationContext,初始化应用上下文

,而DispatcherServlet只是在一个web应用中的一个总的控制器,在此控制器中

,根据ContextLoaderListener创建的应用上下文来创建以DispatcherServlet名

字-servlet.xml的web层应用上下文。具体可以参见web.xml中对此的英文解释。
如果想换另外的名字话则要在web.xml的DispatcherServlet的属性中进行设置,

否则系统只会查找默认的[servletName]-servlet.xml,并将其中的beans读入

beanFactory。它们的初始化bean工厂的过程可以参考网上关于spring源码学习的

一篇文章。

2.在DispatcherServlet初始化handlerMapping的时候,有个参数可以进行设置,

如autoDetectHandlerMapping,如果它为true的话,程序自动在容器的

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

BeanNameUrlHandlerMapping在初始化时将以"/"为首的bean和url一起读入本实例

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

3.以默认的handlerMapping为映射器的控制器,它们的bean是name,且它们的

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

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

4.在建立application上下文时,会建立beanfactroy,然后对此默认的

beanfactory加入BeanPostProcessor的具体实现

ApplicationContextAwareProcessor,这样在beanfactroy中的所有bean初始化时

都将回调ApplicationContextAwareProcessor,在这个类中筛选了一些接口的继

承bean,对这些bean进行相应的注入,e.g setApplicationContext()中又定义

了初始化initApplication()的方法,然后继续完成bean的初始化。

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

commandClass,则不需要在SimpleFormController的继承方法formBackingObject

()中加入创建commandclass的代码,这个方法的目的就是在request在post提交

的时候创建表单对象,并且自动提取和设置表单对象的值

6.web.xml中的配置参数,比如:
 <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>
这个设置可能是通过下面代码进行绑定的,主要过程是,将HttpServletBean中的

初始化时将servlet设置成bean,通过BeanWrapperImpl实现。根据web.xml中的数据进行动态设定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 阅读(267) 评论(0)  编辑  收藏 所属分类: spring


只有注册用户登录后才能发表评论。


网站导航: