java面试题网站:www.javaoffers.com
看过spring源码的都知道,每个bean的初始化都需要经过BeanDefinition,BeanDefinition理解为bean定义:用于描述bean的信息,spring容器根据bean定义进行 IOC/AOP,  通常在业务开发时,我们常用的注解 @Component, @Service, @Controller,@Repository,@Bean 可以使一普通类成为BeanDefinition,spring会对其初始化。除了给予注解的形式,spring还提供了更高及的接口来指定某一类可以为BeanDefinition.例如:

BeanDefinitionRegistryPostProcessor: 注册bean定义
ImportSelector  注册(导入)bean定义 ,给予ConfigurationClassPostProcessor
ImportBeanDefinitionRegistrar: 注册bean定义,实现原理是 BeanDefinitionRegistryPostProcessor的子类-> ConfigurationClassPostProcessor-> this.reader.loadBeanDefinitions(configClasses)

源码分析图解(springBoot源码):
在这里插入图片描述思考问题:假如让你写一springboot组件,比如spring-mybatis,你应该从什么地方下手.

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐