一、   Spring启动时加载和初始化bean概述

Spring Context继承关系

ClassPathXmlApplicationContext->AbstractXmlApplicationContext->AbstractRefreshableConfigApplicationContext->AbstractRefreshableApplicationContext

->AbstractApplicationContext

而AbstractRefreshableApplicationContext 包含DefaultListableBeanFactory beanFactory

DefaultListableBeanFactory->AbstractAutowireCapableBeanFactory->AbstractBeanFactory->FactoryBeanRegistrySupport->DefaultSingletonBeanRegistry

AbstractBeanFactory有如下元素

final Map<String, RootBeanDefinition> mergedBeanDefinitions=new ConcurrentHashMap<String, RootBeanDefinition>(64);

final List<BeanPostProcessor> beanPostProcessors = new ArrayList<BeanPostProcessor>();

boolean hasInstantiationAwareBeanPostProcessors;

1)[ClassPathXmlApplicationContext] ClassPathXmlApplicationContext(String configLocation)

this(new String[] {configLocation}, true, null);

2)[ClassPathXmlApplicationContext] ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, ApplicationContext parent)

if (refresh) { refresh(); }

3)[AbstractApplicationContext]  refresh()

ConfigurableListableBeanFactory beanFactory=obtainFreshBeanFactory();//解析Xml组装eanDefinition

...

invokeBeanFactoryPostProcessors(beanFactory);

registerBeanPostProcessors(beanFactory);//注册BeanPostProcessors.

...

finishBeanFactoryInitialization(beanFactory);//根据BeanDefinition初始化Bean

时间: 2024-10-06 22:00:24

一、   Spring启动时加载和初始化bean概述的相关文章

spring启动时加载字典表数据放入map

import java.util.HashMap; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.zsmy.constant.Constant; import cn.zsmy.service.tmp.ExDictService; import cn.zsmy.

ElasticSearch 启动时加载 Analyzer 源码分析

ElasticSearch 启动时加载 Analyzer 源码分析 本文介绍 ElasticSearch启动时如何创建.加载Analyzer,主要的参考资料是Lucene中关于Analyzer官方文档介绍.ElasticSearch6.3.2源码中相关类:AnalysisModule.AnalysisPlugin.AnalyzerProvider.各种Tokenizer类和它们对应的TokenizerFactory.另外还参考了一个具体的基于ElasticSearch采用HanLP进行中文分词的

如何在tomcat启动时加载一个类

Tomcat启动时classloader加载顺序 Tomcat的class加载的优先顺序一览   1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件.   2.环境变量CLASSPATH中的jar和class文件.   3.$CATALINA_HOME/common/classes下的class文件.   4.$CATALINA_HOME/commons/endorsed下的jar文件.   5.$CATALINA_HOME/commons/i18n下的jar文件.   6.

Servlet在启动时加载的tomcat源码(原创)

tomcat 8.0.36 知识点: 通过配置loadOnStartup可以设置Servlet是否在Tomcat启动时加载,以及按值大小进行有序加载,其最小有效值为0,最大有效值为Integer.MAX_VALUE. Jsp Servlet的类是org.apache.jasper.servlet.JspServlet. Jsp Servlet是强制性启动时加载,其loadOnStartup的默认值,或其值是失效值时,将使用最大有效值. 通过配置Context或Host的failCtxIfServ

设置程序启动时加载的storyboard

这个设置表明:程序启动时会加载Main.storyboard

spring项目中监听器作用-ContextLoaderListener(项目启动时,加载一些东西到缓存中)

作用:在启动Web容器时,自动装配Spring applicationContext.xml的配置信息. 因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法.在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成 pring在web下的入口在配置文件web.xml的监听器中 <listener> <listener-cl

Tomcat(一):Tomcat启动时加载web.xml

server.xml配置文件样例: <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional inf

如何查看apache服务器启动时加载了哪些模块

查看apache服务器编译时所加载的模块 [[email protected] bin]# ./apachectl -lCompiled in modules:  core.c  mod_authn_file.c  mod_authn_default.c  mod_authz_host.c  mod_authz_groupfile.c  mod_authz_user.c  mod_authz_default.c  mod_auth_basic.c  mod_filter.c  mod_versi

bash启动时加载配置文件过程

本文目录: 1.1 判断是否交互式.是否登录式 1.2 几种常见的bash启动方式 1.3 加载bash环境配置文件 当用户登录系统时,会加载各种bash配置文件,还会设置或清空一系列变量,有时还会执行一些自定义的命令.这些行为都算是启动bash时的过程. 另外,有些时候登录系统是可以交互的(如正常登录系统),有些时候是无交互的(如执行一个脚本),因此总的来说bash启动类型可分为交互式shell和非交互式shell.更细分一层,交互式shell还分为交互式的登录shell和交互式非登录shel