Spring源码研究
2022-09-13 14:07:37 0 举报
spring的生命周期,依赖注入
作者其他创作
大纲/内容
SimpleBeanDefinitionRegistry
AbstractBeanDefinitionReader
getResource
载入XML形式Bean定义资源文件方法
@Service
getResource(location)调用需要加载的资源
loadBeanDefinitions(DefaultListableBeanFactory beanFactory)委派模式
解析开始doLoadBeanDefinitions
ClassPathBeanDefinitionScanner
-BeanDefinitionRegistry-BeanDefinitionDefaults-String[] autowireCandidatePatterns-BeanNameGenerator-ScopeMetadataResolver boolean includeAnnotationConfig
doScan(String... basePackages)扫描定位
DefaultResourceLoader
定位
理清BeanDefinition、BeanWrapper和原生Bean之间的关系,想一想为什么要这样设计?答:BeanDefinition对原生bean的基础上的扩展和补充,作为使用层面的对bean的一次定义 BeanWrapper是原生bean的集合包装接口,所需要的行为
GenericXmlApplicationContext
-XmlBeanDefinitionReader reader
+load(..,...)加载
启动载入
AbstractXmlApplicationContext
委派调用其子类的方法,实现加载功能
refreshBeanFactory()
载入
AnnotationConfigApplicationContext
-AnnotatedBeanDefinitionReader:reader-ClassPathBeanDefinitionScanner:scanner
AbstractApplicationContext
对方法注入
DefaultListableBeanFactory放入currentHashMap
注册
AbstractRefreshableConfigApplicationContext
定义载入过程
loadBeanDefinitions(resource)实现加载功能
解析Bean定义资源Document对象的普通元素BeanDefinitionHolder是对BeanDefinition的封装,即Bean定义的封装类
FileSystemXmlApplicationContext
CassPathXmlApplicationContext
registerBeanDefinition注册开始入口
AbstractRefreshableApplicationContext
loadBeanDefinitions()
refreshBeanFactory() 委派模式抽象方法又子类实现
Resource的具体实现方法如果是URL 方式,使用UrlResource 作为bean 文件的资源对象
XmlBeanDefinitionReader
DocumentLoader将 Bean 定义资源转换为 Document 对象
@Controller
@Component
对属性注入
AnnotatedBeanDefinitionReader
-BeanDefinitionRegistry-BeanNameGenerator-ScopeMetadataResolver-ConditionEvaluator
doRegisterBean(....)注册
refresh()
实现抽象Xml Bean读取器加载Bean定义资源
@Autowired
@Repository
DefaultBeanDefinitionDocumentReader
AutowiredAnnotationBeanPostProcessor
bean的资源以dom载入ioc,进行解析dom
0 条评论
下一页
为你推荐
查看更多