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);

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值