spring源码流程图
2020-07-14 21:06:15 8 举报
登录查看完整内容
spring源码流程图
作者其他创作
大纲/内容
将配置类解析并加入beanDefinitionNamesthis.beanDefinitionNames.add(beanName);
refresh()方法
postProcessBeanFactory(beanFactory);
register(配置类);
父类构造器
ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
AnnotationConfigApplicationContext构造器
prepareRefresh();
\"systemProperties\"和\"systemEnvironment\"以及\"environment\"
private volatile List<String> beanDefinitionNames = new ArrayList<>(256);
spring源码 5.1.x流程图AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(SpringConfig.class); IndexService indexService = (IndexService) applicationContext.getBean(\"indexService\"); indexService.hello();
获取自定义的BeanFactoryPostProcessor
internalConfigurationAnnotationProcessor--->ConfigurationClassPostProcessorConfigurationClassPostProcessor是一个BeanFactory的后置处理器,主要功能是解析加了@Configuration的配置类,还会解析@ComponentScan、@ComponentScans注解扫描的包,以及解析@Import等注解
new一个默认的ioc容器this.beanFactory = new DefaultListableBeanFactory();
调用 BeanFactoryPostProcessor 各个实现类的 postProcessBeanFactory(factory) 方法完成扫描和解析(类--->beanDefinition) \t\tbeanDefinitionMap
准备工作包括设置启动时间,是否激活标识位,记录下容器的启动时间、标记“已启动”状态、处理配置文件中的占位符
可以获取当前的 ApplicationContext
invokeBeanFactoryPostProcessors(beanFactory);
初始化Bean定义读取器this.reader = new AnnotatedBeanDefinitionReader(this)初始化了一些内部后置处理器并存入beanDefinitionMap
span style=\"font-size: inherit;\
给bean工厂设置类加载器
prepareBeanFactory(beanFactory)
过滤组件private final List<TypeFilter> includeFilters = new LinkedList<>();this.includeFilters.add(new AnnotationTypeFilter(Component.class));
初始化扫描器this.scanner = new ClassPathBeanDefinitionScanner(this)
internalAutowiredAnnotationProcessor--->AutowiredAnnotationBeanPostProcessorAutowiredAnnotationBeanPostProcessor是解析AutoWired注解的BeanPostProcessor
注册默认的环境beans
添加一个 BeanPostProcessor: ApplicationContextAwareProcessor
getBeanFactoryPostProcessors方法
添加一些 Spring 本身需要的一些工具:如bean工厂设置类加载器,添加几个 BeanPostProcessor,手动注册几个特殊的 bean
0 条评论
回复 删除
下一页