spring启动顺序

tomcat启动服务首先解析的是web.xml配置文件

1  <listener>
2           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
3   </listener>

这段配置的意思是-----启动监听器ContextLoaderListener,从字面意思我知道上下文加载监听?

那么什么是上下文呢?这里的Context又指的是什么呢?

我现在也没什么好的答案解释。

接下来我们看看这个被监听的类

ContextLoaderListener.class

package org.springframework.web.context;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ContextLoaderListener extends ContextLoader implements
        ServletContextListener {
    public ContextLoaderListener() {
    }

    public ContextLoaderListener(WebApplicationContext context) {
        super(context);
    }

    public void contextInitialized(ServletContextEvent event) {
        initWebApplicationContext(event.getServletContext());
    }

    public void contextDestroyed(ServletContextEvent event) {
        closeWebApplicationContext(event.getServletContext());
        ContextCleanupListener.cleanupAttributes(event.getServletContext());
    }
}

首先我们看到它继承了 ContextLoader类,同时实现了ServletContextListener接口,他们分别有什么作用呢?

在往下看他有一个无参构造函数,和一个有参构造函数

再接着是两个它实现的方法contextInitialized(ServletContextEvent event),contextDestroyed(ServletContextEvent event)

从字面意思我可以知道这是初始化上下文,销毁上下文

接下来看看这个ServletContextListener接口

package javax.servlet;

import java.util.EventListener;

public abstract interface ServletContextListener extends EventListener {
    public abstract void contextInitialized(
            ServletContextEvent paramServletContextEvent);

    public abstract void contextDestroyed(
            ServletContextEvent paramServletContextEvent);
}

可以看出这个接口是一个抽象接口继承了EventListener类

我们在看看

EventLister.class从字面意思是事件监听

package java.util;

/**
 * A tagging interface that all event listener interfaces must extend.
 * @since JDK1.1    这个注释的意思是,所有的监听接口都必须继承这个类,虽然他没有方法
 */
public interface EventListener {
}

 

看到这里我们在返回去看ContextLoaderListener类

public void contextInitialized(ServletContextEvent event) {
        initWebApplicationContext(event.getServletContext());
    }

    public void contextDestroyed(ServletContextEvent event) {
        closeWebApplicationContext(event.getServletContext());
        ContextCleanupListener.cleanupAttributes(event.getServletContext());
    }
contextInitialized这个方法调用的时候传入的参数

 

posted @ 2018-07-30 10:41  失忆的小羊  阅读(894)  评论(0)    收藏  举报