![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
文章平均质量分 83
spring
我还没秃,还能学
这个作者很懒,什么都没留下…
展开
-
spring 的 mybatis 整合源码解析
mybatis原创 2022-06-20 22:52:19 · 102 阅读 · 0 评论 -
二战spring_FactoryBean
spring原创 2022-06-19 13:43:39 · 103 阅读 · 0 评论 -
二战spring_启动流程
spring原创 2022-06-19 10:17:53 · 74 阅读 · 0 评论 -
spring中Bean的生命周期之属性填充(1)
概述本文主要介绍生命周期中属性填充,涉及到spring 的自动注入,@Autowired注解,以及属性填充相关后置处理器的实现Bean的生命周期再笔者《spring中bean的生命周期总览》一文中已有介绍,这里不再过多介绍属性填充直接进入属性填充的相关方法 :populateBean(beanName, mbd, instanceWrapper) protected void populateBean(String beanName, RootBeanDefinition mbd, @Nullab原创 2020-11-09 19:59:35 · 634 阅读 · 0 评论 -
spring 循环依赖源码解析
循环依赖循环依赖在java中其实并不是一个问题而是一个现象,例如public class AService{ public BService bservice;}public class BService{ public AService aService;} AService aService = new AService();BService bService = new BService();aService.bService = bService;bService.aServi原创 2020-12-08 00:20:37 · 99 阅读 · 0 评论 -
springBean的实例化过程详解---createBeanInstance(2)
回到createBeanInstance Constructor<?>[] ctors = determineConstructorsFromBeanPostProcessors(beanClass, beanName); if (ctors != null || mbd.getResolvedAutowireMode() == AUTOWIRE_CONSTRUCTOR || mbd.hasConstructorArgumentValues() || !ObjectUtils.i原创 2020-12-05 15:40:16 · 184 阅读 · 0 评论 -
springBean的实例化过程详解---createBeanInstance(1)
概述spring bean的实例化是在bean的沈明周期中createBeanInstance实现的createBeanInstance Class<?> beanClass = resolveBeanClass(mbd, beanName); if (beanClass != null && !Modifier.isPublic(beanClass.getModifiers()) && !mbd.isNonPublicAccessAllowed())原创 2020-12-04 16:44:58 · 475 阅读 · 1 评论 -
Spring之 @Configuration 解析
概述在 spring 进行 执行refresh() 的invokeBeanFactoryPostProcessors(beanFactory),其中最重要的是执行ConfigurationClassPostProcessor 的postProcessBeanDefinitionRegistry()和 postProcessBeanFactory()这两个方法在 postProcessBeanDefinitionRegistry()中,会进行类的扫描,然后生成对应的 beanDefinition,在这个过原创 2020-12-04 13:16:45 · 332 阅读 · 0 评论 -
spring源码解析之ConfigurationClassPostProcessor
概述在invokeBeanFactoryPostProcessors中,spring回对spring中默认的BeanFactory的后置处理器进行调用,而这里相关的最主要的类就是ConfigurationClassPostProcessor,ConfigurationClassPostProcessor这个类继承自BeanDefinitionRegistryPostProcessor,而BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcess原创 2020-12-03 15:49:59 · 172 阅读 · 0 评论 -
Spring源码之invokeBeanFactoryPostProcessors()
invokeBeanFactoryPostProcessors概述一般情况下:执行到这个方法的beanFactory的beanDefinitionMap中有6个BeanDefinition,5个基础BeanDefinition+AppConfig的 BeanDefinition而这6个中只有一个BeanFactoryPostProcessor:ConfigurationClassPostProcessor这里会执行ConfigurationClassPostProcessor进行@Component原创 2020-12-02 12:30:06 · 104 阅读 · 0 评论 -
Spring什么周期之销毁
触发销毁当我们在独立使用spring框架的时候往往会发现,标注了@PreDestory的方法并没有在进程结束前调用,没有触发生命周期的销毁方法,那么如何去触发销毁的生命周期方法呢?有两种方式1.调用applicationContext.close(),这种方式可以说是手动的去关闭容器,触发生命周期销毁2.调用applicationContext.registerShutdownHook(); 这种方式是通过注册一个钩子函数触发生命周期的销毁其实方式一和方式二都是调用到doClose(),所以接下来看原创 2020-11-19 17:19:33 · 1042 阅读 · 1 评论 -
@Resource源码解析
概述@Resource这个注解在实现上很类似,但是于@Autowired在一般情况下是先byType,再byName,但是@Resource则相反,通知@Resource还可以单独制定注入的bean的名字,具体实现也是通过一个后置处理器进行实现的,这个后置处理是CommonAnnotationBeanPostProcessor@Resource的自动注入对于@Resource的自动注入而言,其注入的方法也是postProcessProperties这个方法public PropertyValues原创 2020-11-11 17:09:17 · 782 阅读 · 0 评论 -
spring中Bean的生命周期之属性填充(2)
概述本文是对于《spring中Bean的生命周期之属性填充(1)》一些细节上的补充属性注入当spring获取完当前对象的所有注入点后,会在后续的生命周期中对依赖的属性进行注入,这里会根据注入点,生成一个属性描述对象在根据这个属性描述对象获取到需要注入的Bean public Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName, @Nullable Set&原创 2020-11-11 14:16:41 · 264 阅读 · 2 评论 -
spring的@PostConstruct实现原理
概述本文主要讲解bean生命周期中初始化相关后置处理器生命周期回调方法生命周期回调方法的实现对应着spring中InitDestroyAnnotationBeanPostProcessor这个后置处理器在bean的生命周期中,当bean进入到初始化前这一阶段的时候,就调用其postProcessBeforeInitialization方法 public Object postProcessBeforeInitialization(Object bean, String beanName) thro原创 2020-11-08 20:58:52 · 394 阅读 · 0 评论 -
spring中bean的生命周期总览
概述spring在初始化时,容器会自动将创建去创建非懒加载的单例Bean,由于spring创建Bean的过程涉及到的步骤极其复杂,笔者本篇只是对创建Bean的流程进行概述,具体细节会在后续文章中给大家展示Bean的实例化public void preInstantiateSingletons() throws BeansException { List<String> beanNames = new ArrayList<>(this.beanDefinitionNames)原创 2020-11-04 13:37:04 · 75 阅读 · 0 评论 -
spring之Bean的生命周期之BeanDefinition的合并解析
概述开发人员写的类被spring扫描到容器后,并不是一开始就是一个完整的Bean了,spring扫描的是被注解或者是xml配置的类的信息,spring将类的信息或者是xml的信息保存在BeanDefinition的数据结构中,然而,如果我们想要得到一个可以使用的对象,是需要由spring来创建,这也就是网上常说的将bean的管理和创建交给spring由于bean的生命十分复杂,涉及的点也比较多,本文只会对生命周期做一个总览,具体的细节会在后续持续跟进生命周期首先简单看一下生命周期前的方法调用栈从方原创 2020-10-31 13:54:52 · 987 阅读 · 2 评论 -
spring之BeanFactory源码解析
FactoryBean是什么FactoryBean是spring源码中一种特殊的bean,就如同这个Bean的中文翻译一样,是一个工厂Bean,是用来生成Bean的工厂可以用来干什么假如我们不希望spring帮助我们去New一个对象,但是又希望生成的对象能交给spring进行管理,那么我们可以去实现这个FactoryBean接口,重写其中的getObject方法这样就可以根据自己的逻辑去生成一个Bean对象源码解析FactoryBeanpublic interface FactoryBean原创 2020-10-30 22:35:36 · 307 阅读 · 1 评论