![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring源码
天空之城web
今天比昨天好一点点
展开
-
SpringAop源码阅读(一)代理类的创建过程
添加支持自动代理的核心处理类通过@Import导入AspectJAutoProxyRegistrar@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AspectJAutoProxyRegistrar.class)public @interface EnableAspectJAutoProxy { boolean proxyTargetClass() default false;原创 2021-07-28 09:21:48 · 100 阅读 · 0 评论 -
Spring源码阅读(十)循环依赖的处理
循环依赖的处理流程A和B产生循环依赖,处理过程如下:源码解读代码段一bean被实例化后,添加到三级缓存中,移除二级缓存。// Class: DefaultSingletonBeanRegistryprotected void addSingletonFactory(String beanName, ObjectFactory<?> singletonFactory) { Assert.notNull(singletonFactory, "Singleton factory m原创 2021-07-23 16:42:14 · 153 阅读 · 0 评论 -
Spring源码阅读(九)Bean的初始化过程
原创 2021-07-22 22:40:06 · 97 阅读 · 0 评论 -
Spring源码阅读(八)标注Autowired的构造器是如何实例化的
挑选候选构造器// Class: AutowiredAnnotationBeanPostProcessorpublic Constructor<?>[] determineCandidateConstructors(Class<?> beanClass, final String beanName) throws BeansException { if (!this.lookupMethodsChecked.contains(beanName)) { Refle原创 2021-07-21 18:04:39 · 282 阅读 · 0 评论 -
Spring源码阅读(七)通过FactoryMethod创建对象
直接上源码public BeanWrapper instantiateUsingFactoryMethod( final String beanName, final RootBeanDefinition mbd, final Object[] explicitArgs) { BeanWrapperImpl bw = new BeanWrapperImpl(); this.beanFactory.initBeanWrapper(bw); Object factoryBea原创 2021-07-18 01:03:20 · 264 阅读 · 0 评论 -
Spring源码阅读(六)FactoryBean的处理
直接上源码// Class: DefaultListableBeanFactorypublic void preInstantiateSingletons() throws BeansException { if (this.logger.isDebugEnabled()) { this.logger.debug("Pre-instantiating singletons in " + this); } // Iterate over a copy to allow fo原创 2021-07-16 18:02:39 · 162 阅读 · 0 评论 -
Spring源码阅读(五)registerBeanPostProcessors
直接上源码public static void registerBeanPostProcessors( ConfigurableListableBeanFactory beanFactory, AbstractApplicationContext applicationContext) { // 根据类型获取bean中所有的BeanPostProcessor String[] postProcessorNames = beanFactory.getBeanNamesForTyp原创 2021-07-12 17:20:59 · 66 阅读 · 0 评论 -
Spring源码阅读(四)invokeBeanFactoryPostProcessors
直接上源码public static void invokeBeanFactoryPostProcessors( ConfigurableListableBeanFactory beanFactory, List<BeanFactoryPostProcessor> beanFactoryPostProcessors) { // 1. 先执行所有的BeanDefinitionRegistryPostProcessors. // 保存执行过的bean S原创 2021-07-09 10:12:28 · 67 阅读 · 0 评论 -
Spring源码阅读(三)prepareBeanFactory
protected void prepareBeanFactory(ConfigurableListableBeanFactory beanFactory) { // 设置类加载器 beanFactory.setBeanClassLoader(getClassLoader()); // 设置EL表达式解析器 beanFactory.setBeanExpressionResolver(new StandardBeanExpressionResolver(beanFactory.ge原创 2021-07-07 11:25:11 · 60 阅读 · 0 评论 -
Spring源码阅读(二)obtainFreshBeanFactory
主流程// Class: AbstractApplicationContextprotected ConfigurableListableBeanFactory obtainFreshBeanFactory() { refreshBeanFactory(); ConfigurableListableBeanFactory beanFactory = getBeanFactory(); if (logger.isDebugEnabled()) { logger.debug("Bean f原创 2021-07-06 17:16:19 · 58 阅读 · 0 评论 -
Spring源码阅读(一)Spring配置文件中的beanName是由哪个属性决定的
Spring配置文件中的beanName是由id,还是name确定的,当只有一个class属性时,beanName又是什么呢?首先阅读BeanDefinitionParserDelegate中的parseBeanDefinitionElement(Element ele, @Nullable BeanDefinition containingBean)方法public BeanDefinitionHolder parseBeanDefinitionElement(Element ele, @Null原创 2021-06-29 17:53:22 · 148 阅读 · 0 评论