随笔分类 - Spring源码解析
摘要:Ribbon简介 什么是Ribbon? Ribbon是springcloud下的客户端负载均衡器,消费者在通过服务别名调用服务时,需要通过Ribbon做负载均衡获取实际的服务调用地址,然后通过httpclient的方式进行本地RPC远程调用。 Ribbon原理 Ribbon负载均衡算法主要是轮询算法
阅读全文
摘要:Eureka简介 Eureka是什么? Eureka是基于REST(Representational State Transfer)服务,主要以AWS云服务为支撑,提供服务发现并实现负载均衡和故障转移。我们称此服务为Eureka服务。Eureka提供了Java客户端组件,Eureka Client,
阅读全文
摘要:(1) 新建项目 项目名:formatter-spring-boot-starter (2) 定义pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xml
阅读全文
摘要:我们先来写一个简单的demo方便debug调试。 public class QualifierDemo { public static void main(String[] args) { AnnotationConfigApplicationContext applicationContext=n
阅读全文
摘要:一、SpringAOP应用 先搭建一个SpringBoot项目 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org
阅读全文
摘要:先上一张流程图: 我们Zuul的使用如下: application.properties配置: 1. 从我们的开启Zuul注解@EnableZuulProxy开始看起,这个比较简单,就是引入了ZuulProxyMarkerConfiguration.Marker这个Bean。 2. 再找到Zuul这
阅读全文
摘要:一、配置中心 先来一张流程图: Spring Cloud Bus 如何触发 Refresh? 注:配置中心里我是配置的mq发送消息 1. RefreshBusEndpoint中加了@Endpoint( id = "bus refresh" )注解,他就会监控这个/actuator/bus refre
阅读全文
摘要:一、主线流程 先上一个Feign示例代码: 先来个主线流程图: ==文字描述==:FeignClientsRegistrar这个类会将加了@FeignClient注解的接口实例化一个对象注入到Spring容器中,这个对象是个代理对象,也就是FeignInvocationHandler,里面的每个我们
阅读全文
摘要:源码流程图 先上图,不太清晰,抱歉 一、Eureka Server源码分析 1. 从@EnableEurekaServer注解为入口,它是一个标记注解,点进去看 2. 注解内容如下 3. 从注解可以看到它@link 了配置启动类EurekaServerAutoConfiguration,这个类会将配
阅读全文
摘要:1. 完整启动debug流程如下: 描述: SpringBoot项目启动会调用Spring刷新容器方法,然后会调用到onRefresh方法,此方法是一个空方法,被子类ServletWebServerApplicationContext覆写,然后他会调用创建web容器的方法,然后创建出一个Tomcat
阅读全文
摘要:Bean的扩展 1. 这两个接口都是可以在Bean创建过程中进行拦截,那么他们有什么区别呢? 示例如下: InitializingBean 接口实现类: BeanPostProcessor 接口实现类: 启动项目,运行结果如下: 结果分析: InitializingBean 接口实现类只执行了一次,
阅读全文
摘要:从spring3.0版本引入注解容器类之后,Spring注解的使用就变得异常的广泛起来,到如今流行的SpringBoot中,几乎是全部使用了注解。Spring的常用注解有很多,有@Bean,@Compont,@Autowired等。这些注解的使用和基于xml文件的使用的方式如出一辙,只是一个是用注解
阅读全文
摘要:了解一个项目启动如何实现是了解一个框架底层实现的一个必不可少的环节。从使用步骤来看,我们一般是引入包之后,配置web.xml文件。官方文档示例的配置如下: 其实就是把请求引到DispatcherServlet类中去执行。而DispatcherServlet类其实是一个Servlet类的子类,他的继承
阅读全文
摘要:讲这个之前,我们得先知道在SpringMvc启动时,会加载所有的Bean类,就是加了@Controller,@Component等组件标识的类,然后会把@RequestMapping的方法也加入到一个集合。放入到上下文环境中。 发起请求后的执行流程是:检查request类型-->获取匹配的Handl
阅读全文
摘要:我们先看HttpMessageConverter的示意图,从图片可以看出它是多么的重要。在一条必经之路截道了的感觉。 先上我的测试例子: jsp页面: java代码: 首先我们要知道HttpMessageConverter和@ResponseBody之间有什么联系。 如果不使用@ResponseBo
阅读全文
摘要:这篇博文讨论的问题是从ModelAndView如何渲染到页面。 首先要知道每个请求处理完之后都会返回一个ModelAndView对象。 这里我分6种情况来分析,代表6种返回类型: 我先贴出我的测试的后台代码: 第一种:返回值是ModelAndView类型: 这个方法进去之后,经过一些判断,会执行到一
阅读全文
摘要:首先,先简单的说一下怎么配置SpringMvc的拦截器。 分两步,第一步先定义一个类,实现HandlerInterceptor接口。 第二布,配置springMvc.xml 完工。下面分析原理 打开这个DispatcherServlet类,这个类是SpringMvc中最核心的一个类。答案就在doDi
阅读全文