1.Spring的特点:
Srping是一个轻量级的IOC和AOP容器框架,目前应用于简化企业开发。
2.Spring容器的启动流程:
(1)初始化Spring容器,注册内置的BeanPostProcessor的BeanDefinition到容器中:
a.实例化BeanFactory工厂,用于生成Bean对象。
b.实例化BeanDefinititonReader注解配置读取器,用于对特定注解(如@Service、@Repository)的类进行读取转化成BeanDefinition对象。
c.实例化ClassPathBeanDefinitonScanner路径扫描器,用于对指定的包目录进行扫描查找Bean对象。
(2)将配置类的BeanDefinition注册到容器中。
(3)调用reffesh()方法刷新容器
3.Spring的自动装配
1.Spring自动装配是什么?解决了什么问题?
自动装配就是让应用程序上下文为你找出依赖项的过程。说的通俗一点,就是Spring会在上下文中自动查找,并自动给bean装配与其无关联的属性!
spring中实现自动装配的方式有两种,一种是通过xml文件、另一种是通过注解。
Spring自动装配解决了Spring时代项目配置繁琐的问题,简化配置。
2.自动装配实现原理:
1.当启动Springboot应用程序的时候,会先创建SpringApplication对象,在对象的构造方法中会进行某些初始化工作,最主要的是判断当前应用程序的类型以及初始化器和监听器,在这个过程中会加载整个应用程序中的Spring.factories文件,将文件内容放到缓存对象中,方便后续获取。
2.SpringApplication对象创建完成之后,开始执行run方法,来完成整个启动,启动过程中最主要的有两个方法,第一个叫做prepareContext,第二个叫做refreshContext,在这两个关键步骤中完成了自动装配的核心功能,前面的处理逻辑包含了上下文对象的创建,banner的打印,异常报告期的准备工作,方便后续进行调用。
3.在prepareContex方法中主要完成的是对上下文对象的初始化操作,包括了属性值的设置,比如环境对象,在整个过程中有一个非常重要的方法,叫做load,load主要完成一件事,将当前启动类做为一个beanDefinition注册到registry中,方便后续进行BeanFactoryPostProcessor调用执行的时候,找到对应的主类,来完成@SpringBootApplication,@EnableAutoConfiguration等注解的解析工作。
4.在refreshContext方法中会进行整个容器的刷新过程,会调用Spring中的refresh方法,refresh中有13个非常关键的方法,来完成整个Spring应用程序的启动,在自动装配过程中,会调用invokeBeanFatoryProcessor方法。
SpringCloud学习:https://blog.csdn.net/weixin_38007185/article/details/108186254
https://blog.csdn.net/weixin_60389087/article/details/122909157