在上一篇从feign使用hystrix的全流程分析中,通过一张图详解了springboot启动的时候工作流程。还没尽兴,今天把bean的实例化过程以及spring如何解决循环依赖,详细分析。略微补充了下和bean实例化相关的图。 refresh刷新 invokeBeanFactoryPostProcessors 处理beanFactory 先完成了configclass的解析(解析了所有的元数据) 从resources和Registrar中加载beanDefinition finishBeanFactoryInit…

2022/02/27 0条评论 953点热度 1人点赞 阅读全文

这篇文章算是对之前系列的增强,将spring启动流程、@Configuration配置加载分析 、feign构建与调用全流程分析、hystrix源码分析 整体用两张图片串联起来。 feign 全流程分析 图片中主要分为以下几步: 从项目启动; refresh刷新上下文 解析 举例feign的装配,也可以看hystrix的装配(feign通过EnableAutoConfiguration自动装配),hystrix装配(用EnableAutoConfiguration和EnableCircuitBreaker),将Fe…

2022/01/14 0条评论 810点热度 0人点赞 阅读全文

在hystrix中核心使用了响应式编程。不了解响应式编程的同学可能会看的云里雾里。 基本概念 官网上对rx的描述。 ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences. It extends the observer pattern to support sequences of data and/or events and adds operators th…

2021/12/29 0条评论 891点热度 0人点赞 阅读全文

最近遇到了一些生产问题涉及到了hystrix,想要了解下底层的原理。hystrix中大量运用了Rxjava的响应式编程,不懂Rxjava,理解起来有点费劲。 基本准备 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchem…

2021/12/25 0条评论 1009点热度 0人点赞 阅读全文

创建eureka-server项目 主要看下配置文件 server: port: 8765 # 开启优雅停机kill -2 可以优雅停机 shutdown: GRACEFUL eureka: #此处设置会改变eureka控制台System Status的显示 datacenter: cloud #此处设置会改变eureka控制台System Status的显示 environment: dev instance: appname: eureka-server lease-renewal-interval-in-se…

2021/11/24 0条评论 1023点热度 0人点赞 阅读全文

基于springcloud的灰度实现方案(一) 基于springcloud的灰度实现方案(二) @Configuration配置加载分析 之前介绍了灰度方案以及实现,分析feign调用的时候,有点不太尽兴,这次再丰富一下。 首先,我们在feign调用时,使用了FeignClient注解。 #接口调用 @FeignClient("demo-service") public interface DemoServiceFeginClient { } # 开启feign @EnableFeignClie…

2021/09/14 0条评论 1238点热度 0人点赞 阅读全文

本来只想分析下@import是如何装载的,一下子没刹住车,整了一个Configuration 配置加载分析。 背景 周五在给大家分享sleuth的时候在ZipkinAutoConfiguration中关于程序如何选择Reporter一下子没找到具体的实现。两周之前刚翻过源码,当时理的清清楚楚,两周就忘了。 再次翻看源码后,记录一下 //关键点在ZipkinSenderConfigurationImportSelector,这是一个ImportSelector,先不说为啥 @Import(ZipkinSenderCo…

2021/08/22 0条评论 987点热度 0人点赞 阅读全文

之前梳理的springboot的启动流程,大家想了解的可以看下。 整个springboot启动的流程,更像是一个大的模板方法。 在模板中的每个节点去产生一些具体的事件。 springboot在构造的时候就把Listener都拿到了,这些事件触达以后,对应的listener就自动执行。 springboot启动入口 是整个流程启动的口子。 @SpringBootApplicationpublic class Starter {    public&…

2021/05/20 0条评论 967点热度 0人点赞 阅读全文

  直接使用JDBC一个非常普遍的问题就是动态SQL。使用参数值、参数本身和数据列都是动态SQL,通常是非常困难的。典型的解决办法就是用上一堆的IF-ELSE条件语句和一连串的字符串连接。对于这个问题,Ibatis提供了一套标准的相对比较清晰的方法来解决一个问题,这里有个简单的例子: <select id="getUserList" resultMap="user">     select&nb…

2015/07/03 0条评论 1902点热度 0人点赞 阅读全文

官方WIKI:https://github.com/FasterXML/jackson-databind/wiki jackson 1.x和2.x版本的注解是放置在不同的包下的 1.x是在jackson core jar包org.codehaus.jackson.annotate下 2.x是在jackson-databind包com.fasterxml.jackson.annotation下 jackson的自动检测机制 jackson允许使用任意的构造方法或工厂方法来构造实例 使用@JsonAutoDetect(…

2015/01/26 0条评论 4058点热度 0人点赞 阅读全文