Spring容器ApplicationContext的初始化


前言

本文以Web项目中创建的Spring容器为切入点,记述WebApplicationContext的初始化过程。 Spring版本4.3.18.RELEASE。

一、初始化入口

在基于Servlet+Spring的Web项目开发中,若未指定WebApplicationContext的实现类,将以XmlWebApplicationContext作为Spring容器的默认实现类。在Spring的ContextLoaderListener#contextInitialized或DispatcherServlet#init方法中,创建XmlWebApplicationContext实例后,都会调用#refresh方法来对Spring容器进行初始化。

抽象类AbstractApplicationContext#refresh方法,是Spring ApplicationContext的初始化入口。

二、#refresh方法简介

#refresh方法来org.springframework.context.ConfigurableApplicationContext接口。

ConfigurableApplicationContext接口

ConfigurableApplicationContext接口对ApplicationContext接口进行了扩展,提供了更多的配置ApplicationContext的方法。

接口定义源码如下:

/**
 * SPI interface to be implemented by most if not all application contexts.
 * Provides facilities to configure an application context in addition
 * to the application context client methods in the
 * {@link org.springframework.context.ApplicationContext} interface.
 *
 * <p>Configuration and lifecycle methods are encapsulated here to avoid
 * making them obvious to ApplicationContext client code. The present
 * methods should only be used by startup and shutdown code.
 *
 * @author Juergen Hoeller
 * @author Chris Beams
 * @since 03.11.2003
 */
public interface ConfigurableApplicationContext extends ApplicationContext, Lifecycle, Closeable {
   
...
}

#refresh方法
#refresh方法是ApplicationContext的启动方法,用于加载或刷新ApplicationContext配置。

#refresh源码如下:

	/**
	 * Load or refresh the persistent representation of the configuration,
	 * which might an XML file, properties file, or relational database schema.
	 * <p>As this is a startup method, it should destroy already created singletons
	 * if it fails, to avoid dangling resources. In other words, a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值