孙哥Spring源码第12集

第12集 Spring中的Bean工厂和应用上下文的关系及功能解析

【视频来源于:B站up主孙帅suns Spring源码视频】【微信号:suns45】

1、DefaultListableBeanFactory是如何组成的呢?

DefaultListableBeanFactory继承体系

孙哥Spring源码第12集_第1张图片

2、叙述Spring整个工厂是如何创建对象的?

3、属性填充过程中需要注意的是什么问题?

循环引用的问题

4、ApplicationContext和DefaultListableBeanFactory的关系

对象的创建 存储 注入 DefaultListableBeanFactory

程序猿使用的是ApplicationContext(工厂–> 应用上下文应用环境)在DefaultListableBeanFactory进行了增强

ApplicationContext对于编程人员来说,后续实际开发过程中。

5、ApplicationContext对父类进行怎么样的扩展呢?

原有:

孙哥Spring源码第12集_第2张图片

扩展:
1、事件发布扩展AppicationEventPublisher ,FunctionalInterface:表达的这个类是函数接口。

2、EnvironmentCapable环境感知的能力。

3、MeesageSource:消息源头

4、ResourceLoader ResourcePatternResolver: 读取资源更方便
孙哥Spring源码第12集_第3张图片
缺少:

ApplicationContext缺少了Registry接口。
在接口上没有

6、ApplicationContext没有继续xxxRegistry怎么解决的存储问题?

方法一:让实现类去实现xxxRegistry【查看XmlClassPathBeanFactory spring并没有采用这种方式】
孙哥Spring源码第12集_第4张图片

方法二:让子类去聚合/组合xxxRegistry的方式来完成
孙哥Spring源码第12集_第5张图片

ApplicationContext内部一定封装了DefaultListableBeanFactory

7、java的三大特性 封装,继承,多态的含义

采用继承关系前提 is a 关系
继承有语法限制:单继承
如果我要采用复用?通过聚合或者组合的方式完成
继承存在的真正目的?为了多态,满足设计的关系【父子】

8、DefaultListableBeanFactory提供的功能

查找对象
创建对象
存储对象 存储元数据

9、ApplicationContext的应用实现都有那些类?

ClassPathXmlApplicationContext
AnnotationConfigApplicationContext

10、@service、@Controller、@Repository

统一用他们的总接口。

11、BeanFactory和ApplicationContext创建对象的区别

ApplicationContext预先创建
BeanFactory是Lazy现用现创建。

12、ApplicationContext的底层是BeanFactory,如何做到预先创建对象呢?

而是ApplicationContext在创建的过程中,手工调用了beanFactory.getObject()->放入SingletonObjects;

孙哥Spring源码第12集_第6张图片

this()方法会创建Reader【注册了一些注解需要的类】和Scanner
register:注册appConfig
refresh():注册n个beanDefinition到DefaultListableBeanFactory的beanDefinitionMap以及随后 要进行创建对象放到DefaultSingletonBeanRegistry中的signletonObjects中。

你可能感兴趣的:(spring,java,后端)