Spring 源码解析 ApplicationContext创建流程
2021-08-03 22:26:26 0 举报
Spring 源码解析 ApplicationContext创建流程
作者其他创作
大纲/内容
{@link ResourceLoader}接口的默认实现。
方便的{@link org.springframework.context.ApplicationContext}基类实现,从包含bean定义的XML文档中提取配置
this();
setParent(parent);
refresh();
ClassPathXmlApplicationContext
{@link AbstractRefreshableApplicationContext}子类,它添加了对指定配置位置的通用处理*。充当基于XML的应用程序*上下文实现
AbstractApplicationContext
AbstractRefreshableConfigApplicationContext
public AbstractRefreshableConfigApplicationContext(@Nullable ApplicationContext parent) {\t\tsuper(parent);\t}
{@link org.springframework.context.ApplicationContext} *接口的抽象实现。不强制用于配置的存储类型;简单地*实现公共上下文功能。使用模板方法设计模式,*需要具体的子类来实现抽象方法。
AbstractRefreshableApplicationContext
public AbstractRefreshableApplicationContext(@Nullable ApplicationContext parent) { super(parent); }
返回要使用的默认ClassLoader:通常是线程上下文* ClassLoader(如果有);加载了ClassUtils *类的ClassLoader将用作后备
AbstractXmlApplicationContext
public AbstractXmlApplicationContext(@Nullable ApplicationContext parent) {\t\tsuper(parent);\t}
使用给定的父级创建一个新的ClassPathXmlApplicationContext *从给定的XML文件中加载定义。 @param configLocations资源位置数组@param refresh是否自动刷新上下文,加载所有bean定义并创建所有单例。 或者,在进一步配置上下文之后,手动调用刷新。 @param parent父上下文
设置此应用程序上下文的配置位置。如果未设置,则实现可酌情使用默认值。
public AbstractApplicationContext(@Nullable ApplicationContext parent) { this(); setParent(parent); }
ClassUtils
super(parent);
创建一个新的ClassPathXmlApplicationContext,从给定的XML文件中加载定义*并自动刷新上下文。
刷新
使用给定的父上下文创建一个新的AbstractRefreshableConfigApplicationContext。
创建一个新的DefaultResourceLoader。
public AbstractApplicationContext() {\t\tthis.resourcePatternResolver = getResourcePatternResolver();\t}
独立的XML应用程序上下文,从类路径中获取上下文定义文件*,将纯路径解释为包含包路径的类路径资源名称
设置应用上下级
AbstractRefreshableApplicationContext子类,它添加了对指定配置位置的通用处理。充当基于XML的应用程序上下文实现
@Override\tpublic void setParent(@Nullable ApplicationContext parent) {\t\tthis.parent = parent;\t\tif (parent != null) {\t\t\tEnvironment parentEnvironment = parent.getEnvironment();\t\t\tif (parentEnvironment instanceof ConfigurableEnvironment) {\t\t\t\tgetEnvironment().merge((ConfigurableEnvironment) parentEnvironment);\t\t\t}\t\t}\t}
setConfigLocations(configLocations);
DefaultResourceLoader
public DefaultResourceLoader() {\t\tthis.classLoader = ClassUtils.getDefaultClassLoader();\t}
0 条评论
下一页