源码分析
文章平均质量分 83
源码分析
穹柏
这个作者很懒,什么都没留下…
展开
-
Spring Cloud源码分析之eureka+feign远程调用
是一个REST (Representational State Transfer)服务,用于定位服务,以实现中间层服务器的负载平衡和故障转移,我们称此服务为Eureka服务器。Eureka还有一个基于java的客户端组件,Eureka客户端,这使得与服务的交互更加容易,同时客户端也有一个内置的负载平衡器,它执行基本的循环负载均衡。是一种声明式服务调用组件,它在的基础上做了进一步的封装。通过 Feign,我们只需要声明一个接口并通过注解进行简单的配置(类似于Dao接口上面的Mapper注解一样)即可实现对。原创 2022-11-02 23:41:45 · 1258 阅读 · 0 评论 -
Spring源码分析之事物管理
Spring事物详解,源码原创 2022-10-29 23:13:52 · 549 阅读 · 0 评论 -
Spring源码分析之AOP
Spring AOP原理 Spring AOP源码。Spring AOP源码详解原创 2022-10-28 17:04:05 · 534 阅读 · 0 评论 -
spring mvc源码分析之请求分发
Spring MVC原理。Spring MVC源码分析。Spring MVC源码详解原创 2022-10-28 16:56:40 · 265 阅读 · 0 评论 -
Spring Boot源码分析之自动装配
Spring Boot原理原创 2022-10-26 16:49:21 · 348 阅读 · 0 评论 -
踩坑日记之Gradle自定义JacocoReport跟Test task
起因最近新写了一个项目,为了更好的保证项目输出的质量,引入了单元测试覆盖率统计框架Jacoco。由于gradle官网上的案例只有几个默认的task(test、JacocoTestReport等)的设置,而我希望能够额外为不同的层提供单独的test,也就发生了接下来这些有趣的事儿。1. 为什么JacocoTestReport总是被SKIPPED首先,我写了一个自定义的test。并且通过将finalizedBy指定为JacocoTestReport来让test执行完毕后自动执行JacocoTestRepo原创 2021-09-18 12:56:33 · 2893 阅读 · 0 评论 -
Vertx实战之如何追踪异步函数调用
文章目录背景实现技术栈1. 同步or基于jdk的异步实现思路总结2. Vertx 中的实现1. eventbus上异步传递消息关于类加载2. 基于netty的异步io操作总结背景日常开发中我们经常需要排查各种系统问题,比如说因未处理的异常导致某次http请求返回了响应码为500的response、消息处理失败等。有时候我们可能直接通过异常本身给出的信息就能定位到问题,但有些时候我们可能必需要通过debug复原案发现场来定位问题所在,这个时候就需要知道这次事故的输入是什么(比如请求的参数)。这个问题在同原创 2021-06-03 19:31:41 · 803 阅读 · 2 评论 -
踩坑日记之Springfox+Kotlin lateinit引发NullPointException
相关技术栈Kotlin1.5 Springboot2.5 Springfox3.0起因最近对接支付宝的电脑网站支付,需要定义一个支持表单Post提交的接口来接收支付宝的回调。在定义完接口后发现Springfox初始化swagger时报了空指针,导致swagger api doc无法加载分析1. 报错位置springfox.documentation.service.RequestParameter#equalsspringfox.documentation.schema.Example#e原创 2021-09-03 13:24:47 · 970 阅读 · 0 评论 -
vert.x源码解析之redis集成
文章目录前言vertx是什么vertx-redis-client是什么vertx-redis-client有哪些特性怎么使用vertx-redis-client几个核心类的使用方法RedisConnectionredisOptions各项主要配置的含义typemasterNameroleRedisClientSTANDALONE前言vertx是什么vert.x是一个全异步框架,它是reactor线程模型的一种实现,通过内部的event bus跟event loop做到了处处皆异步。关于里面的细节,后面原创 2020-11-10 14:58:19 · 1120 阅读 · 1 评论 -
Spring源码解读之@Autowired如何解决循环依赖
文章目录@Autowired的what&how什么是循环依赖spring如何解决循环依赖@Autowired的what&how在spring框架下,我们可以通过@Autowired注解对属性或者方法参数进行标注,当spring ioc容器初始化时,会帮我们从容器中拿到对应的实例进行注入什么是循环依赖加入现在有两个Bean如下所示public class BeanA { @Autowired private BeanB beanB;}public class B原创 2020-10-22 14:42:21 · 6914 阅读 · 5 评论 -
Spring源码浅析之事务管理.md
文章目录看完本篇文章能收获什么?概览注入TransactionInterceptor的过程参考类图看完本篇文章能收获什么?spring是怎样帮助我们进行事务管理的spring是如何实现事务的传播的概览spring事务需要aop的支持,在spring容器初始化的时候,会将一个TransactionInterceptor的实例加入到所有方法上加了@Transactional注解的bean的代理对象的advisor数组中,当我们执行事务方法时,就会去执行TransactionInterceptor.原创 2020-07-16 18:13:20 · 208 阅读 · 0 评论 -
seata源码分析之如何控制下游服务的提交与回滚
概览seata client跟维持了一个连接,监听server端的消息,根据接到的消息判断是提交还是回滚。客户端建立流程:GlobalTransactionScanner.afterPropertiesSet() GlobalTransactionScanner.initClient() TMClient.init TmRpcClient.getInstance new TmRpcClient new ...原创 2020-07-12 12:07:06 · 1970 阅读 · 2 评论 -
seata源码分析之全局事务的开启跟xid的传递
概览首先我们通过@GlobalTransactional这个注解开启一个全局事务,而GlobalTransactionScanner.wrapIfNecessary()会为所有方法上加了这个注解的bean注入一个包装了GlobalTransactionalInterceptor实例的advisor,然后返回一个代理对象。GlobalTransactionalInterceptor会在该bean的方法调用前进行拦截,判断是否开启全局事务@Overrideprotected Object wrapI原创 2020-07-11 23:50:44 · 5804 阅读 · 0 评论 -
Spring源码分析之核心流程总结
核心方法:AbstractApplication-->refresh() 在调用refresh方法之前,会实例化一个scanner(ClassPathBeanDefinitionScanner)跟reader(AnnotatedBeanDefinitionReader),实例化内部会执行AnnotationConfigUtils.registerAnnotationConfigProcessors()去注册几个基础beanDefinition,如:ConfigClassPostProcessor原创 2020-07-07 16:47:35 · 223 阅读 · 0 评论