spring原理及源码
文章平均质量分 91
吖土豆
太阳再远,踮起脚尖也可以靠近阳光。
展开
-
SpringBoot自动配置原理(源码)
Spring解析启动类上的所有嵌套的@Import注解,其中就有@EnableAutoConfiguration注解中的@Import(AutoConfigurationImportSelector.class),AutoConfigurationImportSelector类会获取META-INF/spring.factories中(从缓存中)以org.springframework.boot.autoconfigure.EnableAutoConfiguration为key的所有自动配置类,将这些自动配原创 2022-12-13 15:24:32 · 203 阅读 · 0 评论 -
Spring源码之处理配置类的ConfigurationClassPostProcessor
在Spring容器创建过程中,BeanFactoryPostProcessor可以动态的修改容器的内容。比如PropertyPlaceholderConfigurer可以修改bean定义的占位符。ConfigurationClassPostProcessor是BeanFactoryPostProcessor的实现子类,它负责处理所有被@Configuration标注的类。自定义一个配置类MyConfiguration,在文章中,我们会以加载SpringBoot主入口类(也是配置类)的视角解析加载过程。原创 2022-11-18 14:47:21 · 254 阅读 · 0 评论 -
Spring源码之BeanFactoryPostProcessor
Spring的重要扩展点,增强beanFactory的功能;可以在加载解析BeanDefinition之后,可以对BeanDefinition进行修改;可以新增一些特殊的BeanPostProcessor,比如新增带有beanFactory的BeanPostProcessor;BeanFactoryPostProcessor的子接口,用于解析注册BeanDefinition,所以它是先于BeanFactoryPostProcessor执行。实现类中很重要。原创 2022-11-15 13:02:25 · 213 阅读 · 0 评论 -
Spring源码之解析SpringBean的生命周期
【实例化 - doCreateBean前】执行InstantiationAwareBeanPostProcessors的前置处理器,判断是否有已经指定创建好的对象。【实例化 - createBeanInstance】选择实例化的方式,如回调函数、工厂方法、指定构造器等等。【实例化 - createBeanInstance】无特别处理使用默认无参构造实例化(instantiateBean)。【实例化 - createBeanInstance后】利用MergedBeanDefinitionPostProc原创 2022-11-09 18:00:54 · 354 阅读 · 0 评论 -
SpringBoot源码之BeanDefinitionReader解析与自定义
自定义背景:需要用txt文件作为Bean的配置文件,创建一个TxtBeanDefinitionReader继承AbstractBeanDefinitionReader,并实现父类抽象方法。原创 2022-11-08 20:59:39 · 474 阅读 · 3 评论 -
Spring源码之基于@ComponentScan生成BeanDefinition
注解中的提供的扫描路径加载Bean,扫描的核心方法是doScan()。本文用到的是Spring5.2.4版本的源码。原创 2022-11-08 14:19:32 · 392 阅读 · 0 评论 -
SpringBean循环依赖及解决办法
循环依赖的构成,是因为多个对象间的互相依赖造成的。解决办法:提前暴露实例化后的bean。用三级缓存的原因是,防止多次getSingleton导致多次创建代理对象。原创 2022-11-07 15:54:37 · 499 阅读 · 0 评论