Spring的加载过程

Spring提供了IOC(控制反转)和AOP(面向切面编程)基本功能,解决企业应用开发的复杂性的一个开源框架。其核心组件包括core、context、bean。

启动过程
在一个基于springmvc的web应用中,需要有一个web容器,一般我们用tomacat,这个web容器提供了一个全局的上下文环境ServletContext,同时也是Spring IoC容器的宿主环境。
宿主容器启动时,其入口文件便是web.xml。web.xml需要定义两个最基本的内容,ContextLoaderListener和DispatcherServlet。
1、ContextLoaderListener是实现了ServletContextListener接口的监听器,在项目启动的时候会触发容器初始化方法contextInitialized,容器初始化方法主要做3个事情
(1)执行initWebApplicationContext方法,启动一个根上下文WebApplicationContext(一个接口类),其实现类为XmlWebApplicationContext(即传说的IOC容器)。

 
  
    org.springframework.web.context.ContextLoaderListener  
  

(2)根据配置路径加载spring文件创建Bean的实例,这些bean都放入XmlWebApplicationContxt容器中。

  
  
    contextConfigLocation  
      
    classpath:spring-context*.xml  
      

(3)将加载好Bean实例的WebApplicationContext按指定的key注册到ServletContext(Java Web全局变量宿主容器)容器中去。

2、contextLoaderListener监听器监听容器初始化完成之后,开始初始化web.xml中配置的Servlet(可以配置多个),springmvc中以DispatcherServlet为例。DispatcherServlet,前端控制器,也可以叫请求分发控制器,用来接收、匹配、处理、转发每个servlet请求。DispatcherServlet会以WebApplicationServlet作为自己的parent上下文,然后再初始化自己的上下文。DispatcherServlet初始化上下文主要包括处理器映射器,处理器适配器,视图解析器等。最后再将初始化完成的Servlet注册到ServletContext中,这样每个Servlet都可以持有自己的上下文,同时又能共享根上下文,即IOC容器上下文WebApplicationContext。

  
    spring3mvc  
    org.springframework.web.servlet.DispatcherServlet  
      
        contextConfigLocation  
          
        classpath:spring-mvc*.xml  
          
      
    1  

你可能感兴趣的:(springmvc)