美文网首页
servletContext在spring中如何初始化(二)

servletContext在spring中如何初始化(二)

作者: guessguess | 来源:发表于2020-06-29 11:34 被阅读0次



    init()方法的具体实现,位于HttpServletBean类中。

    第172行

    // Let subclasses do whatever initialization they like.

    initServletBean();

    看上面第注释就是,子类想怎么实现初始化就怎么初始化,看来这才是最重要的地方。所以在HttpServletBean类中,这个方法也是一个空方法。我们来看看他的子类org.springframework.web.servlet.FrameworkServlet是怎么实现的吧。

    直接上代码图

    FrameworkServlet中的initServletBean()的实现

    initServletBean中();看到了我们熟悉的webApplicationContext, 并且把引用给了成员变量。

    随后便是initFrameworkServlet()这个方法也是一个空方法,是去让子类自己去实现初始化的一个方法,或者是说spring暴露给我们去使用的一个方法。

    那么重点就是initWebApplicationContext()需要如何初始化了。下面贴代码。

    initWebApplicationContext()的实现

    看上面的注释,一开始初始化肯定是什么上下文都没有,所以需要创建。所以我们关注一下558行。

    //No conetxt instance is defined for this servlet - > create a local one

    所以这个代码可以关注一下,看创建了什么,怎么创建的。

    在FrameworkServlet中的实现

    此方法还调用了一个重载方法

    protected WebApplicationContext  createWebApplicationContext(@NullableApplicationContext parent)

    下面我们看一下这个方法的实现。

    createWebApplicationContext(@NullableApplicationContext parent)方法实现

    这个方法里面,就是生成了一个上下文对象,然后生成完之后,将对应的servletConfig的相关信息注入到对应的成员变量中去。

    创建完上下文之后,便是到了565行onRefresh,在FrameworkServlet类里面,这也是一个空方法。如图

    onRefresh方法

    他的具体实现就是我们预期的org.springframework.web.servlet.DispatcherServlet。

    下面看看实现

    onRefresh的具体实现

    这些方法就是如何初始化Spring的相关组件。

    相关文章

      网友评论

          本文标题:servletContext在spring中如何初始化(二)

          本文链接:https://www.haomeiwen.com/subject/nqeayhtx.html