- 1-7基础铺垫Spring:Initializer初始化意思就是: 一个空房子里面什么都没有,往里面放点东西
- spi机制:tomcat实现servlet规范要实现一个ServletContainerInitializer接口,spi里面写着自己实现上面接口的位置,springs实现web.xml里面的所有信息都要加载到ServletContext的上下文环境里面
- 初始化容器:spring也要遵循Servlet规范 SpringServletContainerrInitializer也实现ServletContainerInitializer接口,然后初始化WebApplicationInitializer上下文环境,往里面加东西(bean,上下文环境)。通过实现WebApplicationInitializer,在其中可以添加servlet,listener等,在加载Web项目的时候会加载这个接口实现类,从而起到web.xml相同的作用。
- 认识ApplicationContext:是spring继BeanFactory之外的另一个核心接口或容器,允许容器通过应用程序上下文环境创建、获取、管理bean。为应用程序提供配置的中央接口。在应用程序运行时这是只读的,但如果实现支持这一点,则可以重新加载。ApplicationContext的主要实现类是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默认从类路径加载配置文件,后者默认从文件系统中装载配置文件
- BeanFactory和FactoryBean区别:BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。
- BeanDefinition:我们一般获取对象的方式有两种,一种是手动直接 new;另一种是交给 Spring 管理,Spring 将管理的对象称之为 Bean,容器会先实例化 Bean,然后自动注入,实例化的过程就需要依赖 BeanDefinition。BeanDefinition 用于保存 Bean 的相关信息,包括属性、构造方法参数、依赖的 Bean 名称及是否单例、延迟加载等,它是实例化 Bean 的原材料,Spring 就是根据 BeanDefinition 中的信息实例化 Bean。
- bean的创建过程和PostProcessor后置处理器:beanFactoryPostProcessor可以对BeanDefinition在未实例化之前进行拓展,BeanPostProcessor可在初始化前后进行干预
- BeanFactory:
- BeanFactory定义了IOC容器的最基本形式,并提供了IOC容器应遵守的的最基本的接口, 也就是Spring IOC所遵守的最底层和最基本的编程规范。 在Spring代码中,BeanFactory只是个接口, 并不是IOC容器的具体实现,但是Spring容器给出了很多种实现, 如 DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等,都是附加了某种功能的实现。
- FactoryBean
- 一般情况下,Spring通过反射机制利用<bean>的class属性指定实现类实例化Bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在<bean>中提供大量的配置信息。配置方式的灵活性是受限的,这时采用编码的方式可能会得到一个简单的方案。Spring为此提供了一个org.springframework.bean.factory.FactoryBean的工厂类接口,用户可以通过实现该接口定制实例化Bean的逻辑。FactoryBean接口对于Spring框架来说占用重要的地位,Spring自身就提供了70多个FactoryBean的实现。它们隐藏了实例化一些复杂Bean的细节,给上层应用带来了便利。从Spring3.0开始,FactoryBean开始支持泛型,即接口声明改为FactoryBean<T>的形式,视频里可以用User对象实现FactoryBean<User>接口,将其注入到容器,就可以通过SpringApplication.run方法拿到ApplicationContext,以调用该bean
- 进入springboot源码阶段
- SpringAplication构造:从SpringbootApplication启动类main方法中run进入, 最核心的一行代码刷新容器 338:refreshContext(context),而前面的一切都是再做准备(准备环境,上下文,上下文初始化)。最终进入到org\springframework\context\support\AbstractApplicationContext.java类中的refresh()方法里
- Multicaster多路广播器:里面有很多的Listener,通过Listener去监听事件,观察者设计模式的核心
- 包装类:利用反射进行包装类赋值更加方便
- 自动装配原理:(讲义 自动装配):
- (25条消息) Spring Boot面试杀手锏————自动配置原理Morty的技术乐园-CSDN博客springboot自动配置原理
- 自动配置幕后英雄:SpringFactoriesLoader详解
posted @
2025-07-10 09:24
飘来荡去evo
阅读(
8)
评论()
收藏
举报