Spring中的ClassPathXmlApplicationContext源码详解

 更新时间:2023年12月01日 10:01:38   作者:军伟@  
这篇文章主要介绍了Spring中的ClassPathXmlApplicationContext源码详解,ApplicationContext的主要实现类是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默认从类路径加载配置文件,后者默认从文件系统中装载配置文件,需要的朋友可以参考下

ClassPathXmlApplicationContext源码

ApplicationContext应用上下文体系如下:

在实现类ClassPathXmlApplicationContext中其实并没有多少重要的操作,主要是在构造函数中配置Spring配置文件的路径:

public class DaoOperationMain {
	public static void main(String[] args) {
		ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml");
	}
}

具体的applicationContext.xml解析相关的操作都在父类refresh中进行操作。

ClassPathXmlApplicationContext的源码如下:

/**
 * 并没有太多具体的操作,主要是初始化构造函数,主要的操作都在父类中
 */
public class ClassPathXmlApplicationContext extends AbstractXmlApplicationContext {
	private Resource[] configResources;
	public ClassPathXmlApplicationContext() {
	}
	public ClassPathXmlApplicationContext(ApplicationContext parent) {
		super(parent);
	}
	public ClassPathXmlApplicationContext(String configLocation) throws BeansException {
		this(new String[] {configLocation}, true, null);
	}
	public ClassPathXmlApplicationContext(String... configLocations) throws BeansException {
		this(configLocations, true, null);
	}
	public ClassPathXmlApplicationContext(String[] configLocations, ApplicationContext parent) throws BeansException {
		this(configLocations, true, parent);
	}
	public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh) throws BeansException {
		this(configLocations, refresh, null);
	}
	public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, ApplicationContext parent)
			throws BeansException {
		super(parent);
		//设置spring的配置文件
		setConfigLocations(configLocations);
		if (refresh) {
			//调用父类的refresh函数,进行一系列初始化
			refresh();
		}
	}
	public ClassPathXmlApplicationContext(String path, Class<?> clazz) throws BeansException {
		this(new String[] {path}, clazz);
	}
	public ClassPathXmlApplicationContext(String[] paths, Class<?> clazz) throws BeansException {
		this(paths, clazz, null);
	}
	public ClassPathXmlApplicationContext(String[] paths, Class<?> clazz, ApplicationContext parent)
			throws BeansException {
		super(parent);
		Assert.notNull(paths, "Path array must not be null");
		Assert.notNull(clazz, "Class argument must not be null");
		this.configResources = new Resource[paths.length];
		for (int i = 0; i < paths.length; i++) {
			this.configResources[i] = new ClassPathResource(paths[i], clazz);
		}
		//调用父类的refresh函数,进行一系列初始化
		refresh();
	}
	@Override
	protected Resource[] getConfigResources() {
		return this.configResources;
	}
}

到此这篇关于Spring中的ClassPathXmlApplicationContext源码详解的文章就介绍到这了,更多相关ClassPathXmlApplicationContext源码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis Plus 代码生成器的实现

    Mybatis Plus 代码生成器的实现

    这篇文章主要介绍了Mybatis Plus 代码生成器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Maven插件docker-maven-plugin的使用

    Maven插件docker-maven-plugin的使用

    在我们持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,docker-maven-plugin 插件就是为了帮助我们在Maven工程中,通过简单的配置,自动生成镜像并推送到仓库中。感兴趣的可以了解一下
    2021-06-06
  • 深入了解Java核心类库--Objects类

    深入了解Java核心类库--Objects类

    这篇文章主要介绍了Java中的Object类详细介绍,本文讲解了Object类的作用、Object类的主要方法、Object类中不能被重写的方法、Object类的equals方法重写实例等内容,需要的朋友可以参考下
    2021-07-07
  • java并发包JUC同步器框架AQS框架原文翻译

    java并发包JUC同步器框架AQS框架原文翻译

    发现了一篇JDK作者的论文《The java.util.concurrent Synchronizer Framework》主要描述了作者对AbstractQueuedSynchronizer同步器框架的设计和实现。权威性毋庸置疑!自然需要拜读一下,配上中文翻译,希望大家能有所收获
    2022-02-02
  • redis实现队列的阻塞、延时、发布和订阅

    redis实现队列的阻塞、延时、发布和订阅

    本文主要介绍了redis实现队列的阻塞、延时、发布和订阅,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Java 在Word中创建邮件合并模板并合并文本和图片的操作方法

    Java 在Word中创建邮件合并模板并合并文本和图片的操作方法

    通过Java程序展示如何来实现创建模板,并通过邮件合并功能来合并文本数据和图片数据的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07
  • 详解idea从git上拉取maven项目详细步骤

    详解idea从git上拉取maven项目详细步骤

    这篇文章主要介绍了详解idea从git上拉取maven项目详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • SpringBoot中各个层级结构的具体实现

    SpringBoot中各个层级结构的具体实现

    在SpringBoot项目中,常常会把代码文件放入不同的包中,本文主要介绍了SpringBoot中各个层级结构的具体实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • JAVA实现JSON后端向前端传递数据

    JAVA实现JSON后端向前端传递数据

    本篇文章主要介绍了JAVA实现JSON后端向前端传递数据,这里整理了详细的代码,具有一定的参考价值,有需要的小伙伴可以参考下。
    2017-03-03
  • Spring ApplicationListener的使用详解

    Spring ApplicationListener的使用详解

    这篇文章主要介绍了Spring ApplicationListener的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论