Spring源码解析之基础应用(二)】的更多相关文章

上一个章节,笔者向大家介绍了spring是如何来过滤配置类的,下面我们来看看在过滤出配置类后,spring是如何来解析配置类的.首先过滤出来的配置类会存放在configCandidates列表, 在代码<1>处会先根据配置类的权重做一个排序,权重越低的配置类排在越前,在解析的时候也越先解析.之后会根据configCandidates列表生成一个set集合candidates,防止configCandidates列表存在相同的元素.之后会在<3>处解析这些配置类,并在<4>…
方法注入 在spring容器中,大部分bean的作用域(scope)是单例(singleton)的,少部分bean的作用域是原型(prototype),如果一个bean的作用域是原型,我们A bean的作用域是原型,B bean中以@Autowired的方式注入A,那么B在A中依旧是单例.我们可以让B类实现ApplicationContextAware接口,这个接口会注入一个ApplicationContext对象,如果我们有需要A bean,则从ApplicationContextAware对…
上一章,我们介绍了在AnnotationConfigApplicationContext初始化的时候,会创建AnnotatedBeanDefinitionReader和ClassPathBeanDefinitionScanner两个对象: public class AnnotationConfigApplicationContext extends GenericApplicationContext implements AnnotationConfigRegistry { -- public…
组合Java配置 在XML中,我们可以使用<import/>标签,在一个XML文件中引入另一个XML文件,在Java类中,我们同样可以在一个配置类中用@Import引入另一个配置类,被引入的配置类中的@Bean也会加载到spring容器.代码如下: @Configuration public class ConfigA { @Bean public A a() { return new A(); } } @Configuration @Import(ConfigA.class) public…
在上一章中笔者介绍了refresh()的<1>处是如何获取beanFactory对象,下面我们要来学习refresh()方法的<2>处是如何调用invokeBeanFactoryPostProcessors方法执行bean工厂后置处理器,这个方法在笔者看来是整个refresh()方法最重要的方法之一,因为就是在这个方法完成了扫描类路径下所有的类,并将类解析成BeanDefinition注册到spring容器中. public abstract class AbstractAppli…
我们先来看类图吧: 除了BeanFactory这一支的接口,AbstractBeanFactory主要实现了AliasRegistry和SingletonBeanRegistry接口. 这边主要提供了这样的三个功能: 别名管理,单例创建与注册,工厂方法FactoryBean支持. 我们来看看这些接口,类的主要职责吧: BeanFactory Spring IOC容器的根接口 -- HierachicalBeanFactory 实现容器的继承,就是可以有父 BeanFactory -- -- Co…
1. [文件] spring源码.txt ~ 15B     下载(167) ? 1 springн┤┬вио╬Ш: 2. [文件] spring源码分析之AOP.txt ~ 15KB     下载(166) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51…
一.前言 承接<Spring源码解析--创建bean>.<Spring源码解析--创建bean的实例>,我们今天接着聊聊,循环依赖的解决方案,即创建bean的ObjectFactory. 二.ObjectFactory boolean earlySingletonExposure = (mbd.isSingleton() && this.allowCircularReferences && isSingletonCurrentlyInCreation…
Spring源码解析-ioc容器的设计 1 IoC容器系列的设计:BeanFactory和ApplicatioContext 在Spring容器中,主要分为两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本的功能: 另一个是ApplicationContext应用上下文,它作为容器的高级形态而存在. 应用上下文在简单容器的基础上,增加了许多面向框架的特性,同时对应用环境作了许多适配.这两个容器系列,就基本满足用户对IoC容器使用的大部分需求了.…
相信我,你会收藏这篇文章的 本篇文章是这段时间撸出来的Spring源码解析系列文章的汇总,总共包含以下专题.喜欢的同学可以收藏起来以备不时之需 SpringIOC源码解析(上) 本篇文章搭建了IOC源码解析的demo环境,启动这个环境即可开启阅读Spring源码的第一步 开始源码阅读时介绍了Spring容器中最经典的容器ClassPathXmlApplicationContext,这个容器是我们在学习Spring的时候最先接触的一个容器,它负责加载当前环境下的xml配置文件 紧接着介绍了bean…