返回介绍

1. 初始化

发布于 2025-10-03 18:08:52 字数 1170 浏览 0 评论 0 收藏

spring-mvc 的核心便是 DispatcherServlet,所以初始化也是围绕其展开的。类图:

DispatcherServlet 类图

Servlet 标准定义了 init 方法是其生命周期的初始化方法。

HttpServletBean.init:

@Override
public final void init() throws ServletException {
    // Set bean properties from init parameters.
    PropertyValues pvs = new ServletConfigPropertyValues(getServletConfig(), this.requiredProperties);
    //包装 DispatcherServlet,准备放入容器
    BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(this);
    //用以加载 spring-mvc 配置文件
    ResourceLoader resourceLoader = new ServletContextResourceLoader(getServletContext());
    bw.registerCustomEditor(Resource.class, new ResourceEditor(resourceLoader, getEnvironment()));
    //没有子类实现此方法
    initBeanWrapper(bw);
    bw.setPropertyValues(pvs, true);
    // Let subclasses do whatever initialization they like.
    initServletBean();
}

主要逻辑一目了然。注意 setPropertyValues 方法会导致对 DispatcherServlet 相关 setter 方法的调用,所以当进行容器初始化时从 init-param 中读取的参数已被设置到 DispatcherServlet 的相关字段(Field) 中

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。