随笔分类 - Spring分步剖析
一步一步了解Spring的实现原理
摘要:在执行refreshContext刷新上下文的过程中,首次执行了对BeanFactoryPostProcessor后置处理器的执行,此时BeanFactory容器中有两个bean工厂后置处理器: ConfigurationWarningsApplicationContextInitializer.C
阅读全文
摘要:在SpringApplication的run方法中,调用了prepareContext方法,prepareContext方法用来准备上下文,即加载上下文时需要的资源。在方法的最后,加载了资源路径和加载器的load()方法,使用加载器从资源文件中注册BeanDefinition。 此篇我们看一下注解类
阅读全文
摘要:#AbstractAdvisorAutoProxyCreator applyBeanPostProcessorsAfterInitialization 首先看一下针对UserServiceImpl的处理过程 如果早期暴露缓存里面不包含该Bean的缓存,则进行包装。 public abstract c
阅读全文
摘要:参考代码 在上一篇章中,我们分析了循环依赖普通Bean加载的过程,知道了是依靠字段注入和三级缓存解决的循环依赖问题。接下来我们猜测一下如果Bean是动态代理Bean,是如何解决循环依赖问题的? 首先假设A是动态代理类、B是普通Bean,A依赖B、B依赖A,在第一次getBean()的过程中,A在执行
阅读全文
摘要:参考运行代码 首先我们自定义两个类,并进行循环引用,查看执行效果 OrderServiceImpl @Service public class OrderServiceImpl implements IOrderService { @Resource private IUserService use
阅读全文
摘要:几个初始化要点: 在调用SpringApplication的构造函数时,调用了setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class))方法时,底层调用了loadSpri
阅读全文
摘要:SpringBoot在启动的时候,调用了run方法,在调用SpringApplication的 prepareContext()方法时候,调用了applyInitializers(context)应用初始化方法,applyInitializers(context)方法中,通过获取初始化对象,进行初始
阅读全文

浙公网安备 33010602011771号