发布了文章2023-07-05
红色方框1标明项目启动成过程中spring容器先扫描所有的资源文件转换为对目标类进行描述RootBeandefinition,然后@SpringBootApplication注解将声明的类加载到DefaultListableBeanFacrory中,此时spring框架执行org.springframework.beans.factory.support.AbstractBe...
发布了文章2023-07-04
在图一中我们可以发现,在ConsumerController中调用自定义的DemoFeignClient方法时,通过spring容器中对DemoFeignclient的代理类的调用最终通过feign.SynchronousMethodHandler.invoke()->openfeign.loadbalancer.execute()->org.springframework.cloud.loadba...
发布了文章2023-04-04
关于“Did you forget to include spring-cloud-starter-loadbalancer?”报错的原因,网上有一大堆博客供大家参考,这里我给大家提供一种新的参考。
发布了文章2023-03-06
通过对比上面两张图可以发现,图一DefaultSqlSession.selectList()底层调用Plugin.invoke();图二DefaultSqlSession.selectList()底层调用CachingExecutor.query()。其中,图一是分页插件生效的调用链,图二是分页插件失效的调用链。
发布了文章2023-02-18
起因是ribbon集成spring boot、openfeign实现负载均衡远程调用,初始阶段没有添加下面配置,发现第一次进行远程调用,ribbon报错 【read time out】。然后添加如下配置,解决问题~
发布了文章2022-07-01
上面的图1、图2、图3分别表示项目启动后我们的测试类的创建顺序:1.先创建TransactionServiceTest;2.因为TransactionServiceTest依赖UserManager2,所以紧接着去创建UserManager2;
发布了文章2022-06-08
new ReentrantLock(true);加锁流程: {代码...} 如果获得锁失败,和JDK8 new ReentrantLock()加锁流程(一)中流程一样!
发布了文章2022-06-08
AbstractQueuedSynchronizer.acquireQueued(addWaiter(Node.EXCLUSIVE), arg);
发布了文章2022-06-06
Spring Boot启动之后的的调用栈信息如下:图1图2由图1,图2可知InjectionMetadata.inject()执行属性织入逻辑,下面是部分细节
发布了文章2022-06-06
由上图可知,在创建完bean实例后,通过applyMergedBeanDefinitionPostProcessors()修改beanDefinition结构(针对这种场景可以理解为解析@Resource对应的bean信息)
发布了文章2022-06-06
图1我们再回顾一下之前的事务源码分析有提到,执行到AbstractAutowireCapableBeanFactory.initializeBean()->applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName)->AbstractAutoProxyCreator.postProcessAfterInitialization()->AbstractAu...
发布了文章2022-06-06
Spring Boot 如何处理@Autowired(一)这篇小文可知AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues()最终执行对@Autowired的属性实例进行织入;然后以DefaultListableBeanFactory.resolveDependency()->DefaultListableBeanFactory.doResolveDe...
发布了文章2022-06-06
图1图2由图1,图2可以看出Spring Boot执行beanFactory.preInstantiateSingletons()方法的过程中,需要实例化目标 bean(TransactionServiceTest);图3 其中AbstractAutowireCapableBeanFactory.populateBean():
发布了文章2022-06-03
Spring Boot 如果一个service @Transactional所在方法不是public会发生什么?(二)这篇文章里我们知道了,no-public 的帽子方法(其实方法就是@Transactional被修饰^_^)最终执行的实例并不是代理类,那么在什么时候代理类被替换掉的呢?
发布了文章2022-06-03
由Spring Boot 如果一个service @Transactional所在方法不是public会发生什么?我们可以知道,当一个servie 中被@Transactional修饰的方法全部都是no-public的时候,Spring不会创建代理类,也就是我们的事务没有办法生效~。
发布了文章2022-06-02
{代码...} 欢迎讨论交流~~~
发布了文章2022-06-02
AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(),其中applyBeanPostProcessorsAfterInitialization()继承自AbstractAutoProxyCreator,下面是方法细节
发布了文章2022-06-02
public class ZConvert { {代码...} }
发布了文章2022-05-31
先贴出示例:接下来开始分析过程,启动项目,会发现ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry()执行我们声明的目标类:图1-2
发布了文章2022-05-28
为什么要贴出@EnableFeignClients呢?因为这个FeignClientsRegistrar类是我们解析Feign类的入口,下面的代码块是FeignClientsRegistrar的部分细节: