【Spring MVC源码】DispatcherServlet加载

本文详细探讨了Spring MVC的核心组件DispatcherServlet的加载、创建和初始化过程,包括3.1.1节的DispatcherServlet加载,3.1.2节的创建阶段,以及3.1.3节的初始化步骤,对于理解Spring MVC的工作原理至关重要。
摘要由CSDN通过智能技术生成

3.1、DispatcherServlet的加载/创建/初始化

DispatcherServlet类关系

3.1.1、DispatcherServlet加载
static {
	try {
        // 策略文件:DispatcherServlet同一目录下的DispatcherServlet.properties
		ClassPathResource resource = new ClassPathResource(DEFAULT_STRATEGIES_PATH, DispatcherServlet.class);
		defaultStrategies = PropertiesLoaderUtils.loadProperties(resource);
	}
	catch (IOException ex) {
		throw new IllegalStateException("Could not load '" + DEFAULT_STRATEGIES_PATH + "': " + ex.getMessage());
	}
}
3.1.2、DispatcherServlet创建
// DispatcherServlet
public DispatcherServlet() {
	super();
	setDispatchOptionsRequest(true);
}

//其父类的空构造函数均无意义
3.1.2、DispatcherServlet初始化
// HttpServletBean
public final void init() throws ServletException {
	if (logger.isDebugEnabled()) {
		logger.debug("Initializing servlet '" + getServletName() + "'");
	}

	/* 会解析web.xml配置中,对当前Servlet配置的<init-param>标签,并将标签中的参数注入到Servlet的字段中,如下:contextConfigLocation的值会被注入到Servlet的同名字段中
     * <servlet>
     *   <servlet-name>springMvc</servlet-name>
     *   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     *   <init-param>
	 *		<param-name>contextConfigLocation</param-name>
	 *		<param-value>classpath:spring-mvc.xml</param-value>
	 *	 </init-param>
	 *	 <load-on-startup>1</load-on-startup>
	 * </servlet>
	 * contextConfigLocation参数
	 * /
	PropertyValues pvs = new ServletConfigPropertyValues(getServletConfig(), this.requiredProperties);
	if (!pvs.isEmpty()) {
		try {
			BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(this);
			ResourceLoader resourceLoader = new ServletContextResourceLoader(getServletContext());
			bw.registerCustomEditor(Resource.class, new ResourceEditor(resourceLoader, getEnvironment()));
			initBeanWrapper(bw);
			bw.setPropertyValues(pvs, true);
		}
		catch (BeansException ex) {
			if (logger.isErrorEnabled()) {
				logger.error("Failed to set bean properties on servlet '" + getServletName() + "'", ex);
			}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值