
SpringBoot
文章平均质量分 92
张书康
学海无涯。
展开
-
SpringBoot2 | Spring AOP 原理深度源码分析(八)
概述AOP(Aspect-Oriented Programming) 面向切面编程。简单来说,就是将影响对象行为的一些公共方法抽取出来,做成公共部分即为切面。使用方式就不用阐述了,本系列主要是对源码进行深度分析和总结。UML图Spring Aop 自动装配核心类 UML图:源码springboot 自动装配肯定还是从spring.factories开始:# Auto Config...原创 2018-11-25 16:11:11 · 18988 阅读 · 11 评论 -
Spring | Spring AOP 增强框架 Nepxion Matrix 详解
概述在 SpringBoot2 | Spring AOP 原理源码深度剖析(八)一文中,介绍了 Spring AOP 的多种实现机制,原理大同小异。本篇来继续介绍一款开源的 AOP 框架:Nepxion Matrix,该框架致力于对 Spring AOP 的扩展和增强,灵活而且易用。代码:https://github.com/Nepxion/MatrixMatrix框架主要对Spring做了...原创 2018-12-02 22:25:12 · 1262 阅读 · 0 评论 -
SpringBoot2 | SpingBoot FilterRegistrationBean 注册组件 | FilterChain 责任链源码分析(九)
微信公众号:吉姆餐厅ak学习更多源码知识,欢迎关注。SpringBoot2 | SpringBoot启动流程源码分析(一)SpringBoot2 | SpringBoot启动流程源码分析(二)SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)SpringBoot2 | SpringBoot Environment源码分析(四...原创 2018-12-15 20:57:45 · 12871 阅读 · 5 评论 -
SpringBoot2 | BeanDefinition 注册核心类 ImportBeanDefinitionRegistrar 源码分析 (十)
概述本篇来介绍一个Spring强大的扩展接口:ImportBeanDefinitionRegistrar,该接口主要用来注册beanDefinition。很多三方框架集成Spring 的时候,都会通过该接口,实现扫描指定的类,然后注册到spring 容器中。比如 Mybatis 中的Mapper接口,springCloud中的 FeignClient 接口,都是通过该接口实现的自定义注册逻辑。...原创 2018-12-27 11:23:47 · 7644 阅读 · 0 评论 -
SpringBoot2 | Spring IOC 流程中核心扩展接口的12个扩展点源码分析(十一)
概述Spring 的核心思想即是容器。整个容器运行时,外部看似风平浪静,内部实则一片汪洋大海。Spring 容器刷新的过程严格遵守开闭原则,内部对修改关闭,对扩展开放。可以这么理解:把 Spring 容器理解为一个钥匙环,上面挂满了钥匙,每个钥匙理解为一个扩展接口。钥匙的顺序是固定的,可理解为接口的调用顺序固定,对修改关闭。每个钥匙可以用来做不同的事情,可理解为扩展接口的实现不同,对扩展开...原创 2019-01-09 13:24:15 · 5945 阅读 · 4 评论 -
SpringCloud | 深入解析SpringCloud中的父子容器
概述在引入 SpringCloud 的项目中会多次创建 Spring 容器,本篇从源码角度深入分析具体哪些点会创建 Spring 容器,以及这些容器之间的区别与联系。本文介绍的Spring相关容器是基于SpringCloud项目。容器大致分为三层:BootStrap Spring 容器:由SpringCloud 监听器创建,用来初始化 SpringCloud 上下文Spring...原创 2019-01-27 01:00:42 · 3081 阅读 · 4 评论 -
Spring Cloud Ribbon 核心类
原创 2019-02-28 20:07:55 · 476 阅读 · 0 评论 -
Idea debug模式下出现 "Connected to the target VM, address: '127.0.0.1:55606', transport: 'socket'"
如题,一个很坑的错误。不在debug模式下启动,项目运行没有问题。在debug模式下运行,出现"Connected to the target VM, address: '127.0.0.1:55606', transport: 'socket'"网上有解决方案,说和测试类中方法的大写有关。然而,我换了一个全新的项目,启动时也有同样的问题。这种情况基本上就告别idea了(更换新版本...原创 2019-02-26 18:45:23 · 68764 阅读 · 10 评论 -
基于 SpringBoot2 和 Netty 实现一个简易的RPC通信框架
概述大致的流程:实现客户端 代理类处理逻辑 :InvocationHandler扫描被代理接口,生成代理类,注入 spring 容器根据调用的接口,找到指定的实现类,并完成调用。代码1)NettyRpcInvocationHandlerpublic class NettyRpcInvocationHandler implements InvocationHandler { ...原创 2019-04-03 17:11:55 · 2063 阅读 · 0 评论 -
SpringCloud Sleuth 实现业务逻辑日志包含 Span 和 Trace信息
概述SpringCloud Sleuth是Spring Cloud的核心组件之一,实现了一种分布式链路跟踪的功能。在调用链层级很深的分布式系统中,为定位问题提供了很大便利。Sleuth 大致的原理是自定义了一个拦截器:TraceFeignRequestInterceptor,该拦截器继承了 Feign 的拦截器接口:RequestInterceptor,所以在服务与服务直接调用时,可以进行一些...原创 2019-05-21 16:02:04 · 4977 阅读 · 2 评论 -
SpringBoot2 | 条件注解 @ConditionalOnBean 原理源码分析(七)
条件注解是Spring4提供的一种bean加载特性,主要用于控制配置类和bean初始化条件。在springBoot,springCloud一系列框架底层源码中,条件注解的使用到处可见。本篇就来探讨一下比较常用的一个调节注解:@ConditionalOnBean。可能不少人在使用该注解时会遇到不生效的情况:@ConditionalOnBean依赖的 bean 明明已经配置了,但就是不生效。@C...原创 2018-11-17 00:15:12 · 14776 阅读 · 7 评论 -
SpringCloud | SpringCloud Feign的前世今生【源码深入分析】
概述springCloud feign主要对netflix feign进行了增强和包装,本篇从源码角度带你过一遍装配流程,揭开feign底层的神秘面纱。主要包括feign整合ribbon,hystrix,sleuth,以及生成的代理类最终注入到spring容器的过程。篇幅略长,耐心读完,相信你会有所收获。Feign架构图一些核心类及大致流程:大体步骤:1、注册FeignClie...原创 2018-10-13 11:21:22 · 4240 阅读 · 1 评论 -
SpringBoot2 | SpringBoot监听器源码分析 | 自定义ApplicationListener(六)
概述我们都知道Spring源码博大精深,阅读起来相对困难。原因之一就是内部用了大量的监听器,spring相关的框架,皆是如此,spring security,springBoot等。今天来看下springBoot监听器的应用。因为springBoot是对spring的封装,所以springBoot的监听器的应用主要是在启动模块。源码springBoot监听器的主要分为两类,运行时监听...原创 2018-09-21 18:33:31 · 7169 阅读 · 0 评论 -
SpringBoot | 项目使用JRebel热部署
下载首先先通过IDE安装jrebel插件,idea或eclipse都可以。因为是收费插件,不想付费的就选择破解版本了。当然可以到官网找到注册码,前提要登录。进入官网 https://my.jrebel.com/ 选中facebook或者Twitter的方式登录成功后,弹出这个界面,把里面的注册码拷贝到idea里面即可,然后重启后看到valid,表示注册成功。步骤一. Idea中原创 2017-12-19 18:29:38 · 1779 阅读 · 0 评论 -
SpringBoot | 常见几种异常配置方案
在上一篇博客中,分析了spring 和 springboot异常的源码执行流程,《SpringBoot异常机制源码分析》,解析流程梳理之后,接下来主要对我们项目中的异常配置,做一个整理。在使用spring、springBoot的项目中,常见的配置大概有以下三种方案:1)使用@ControllerAdvice注解,自定义 exceptionHandler,继承 ResponseEnt...原创 2017-12-21 18:26:16 · 2771 阅读 · 2 评论 -
SpringBoot | 异常配置源码分析
springboot的异常处理依旧是spring的异常处理,只是在spring的基础之上多了一个统一异常出口。 首先看一下spring异常处理入口肯定是spring接受请求的类中:DispatcherServlet类 在有异常的情况下,上面方法会走到异常入口processDispatchResult(processedRequest, response, mappedHandler, m原创 2017-12-20 18:52:18 · 899 阅读 · 0 评论 -
SpringBoot | SpringBoot 微服务整合Swagger生成API文档
关于swagger的优点就不描述了,直接来看一下使用示例:1)首先引入swagger依赖: <!--swagger--> <dependency> <groupId>io.springfox</groupId> &am原创 2018-02-12 18:23:37 · 671 阅读 · 0 评论 -
SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)
在上一篇博客中分析了springBoot启动流程,大体的轮廓只是冰山一角。今天就来看一下springBoot的亮点功能:自动化装配功能。 先从@SpringBootApplication开始。在启动流程章节中,我们讲述了SpringBoot2大致的启动步骤,并进行了源码详解。但是在刷新容器这块并未展开,refreshContext(context);简单的一行代码,背后却做了太多...原创 2018-09-07 17:02:06 · 21578 阅读 · 6 评论 -
SpringBoot2 | SpringBoot启动流程源码分析(一)
概述:前阵子看到了SpringCloud社区的一个开源项目,主要是对服务发现增强的功能。研究项目的时候发现代码简练,优雅,最主要是spring ioc和aop特性应用的得心应手。若非对源码有深入研究,不可能写出这么优秀的开源项目。另外在现有的springboot专栏中,大多数博文旨在应用,对一些中间件的整合之类,源码分析的博客数量有限。鉴于以上两方面,该系列应运而生。该系列主要还是Spri...原创 2018-08-31 15:29:58 · 131197 阅读 · 32 评论 -
SpringBoot2 | SpringBoot启动流程源码分析(二)
继续上一篇博客的启动流程分析。 在上一篇SpringBoot | SpringBoot2 | SpringBoot2启动流程源码分析(一)中我们提到springBoot启动流程大致有以下7点:第一步:获取并启动监听器第二步:构造容器环境第三步:创建容器第四步:实例化SpringBootExceptionReporter.class,用来支持报告关于启动的错误第五步:准备容器...原创 2018-09-03 16:01:43 · 22796 阅读 · 5 评论 -
SpringBoot2 | SpringBoot Environment源码分析(四)
版权声明:本文为博主原创文章,转载请标明出处。SpringBoot2 | SpringBoot启动流程源码分析(一)SpringBoot2 | SpringBoot启动流程源码分析(二)SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)一、概述Environment是 spring 为运行环境提供的高度抽象接口,项...原创 2018-09-17 15:32:32 · 11162 阅读 · 1 评论 -
SpringBoot2 | SpringBoot自定义AutoConfiguration | SpringBoot自定义starter(五)
概述springBoot为我们提供了自动化装配的功能,简单方便。可以像使用插件一样,对各个组件自由组合装配。只需引入定义好的 starter 即可。有点类似于java的SPI机制,只不过SPI机制是为了解决项目与项目之间的解耦,而starter方式实现了模块化完全解耦,实现热插拔功能。今天就来自定义一个自动化装配的实现,自定义starter。自定义starter首先定义一个配置类模块:...原创 2018-09-20 19:52:20 · 10368 阅读 · 6 评论 -
SpringBoot2 | SpringBoot2 Hikari数据源配置
概述SpringBoot2中默认的数据已经更改为hikari,据说性能很高,有兴趣的可以进行测试。配置之前在做springBoot1.5升级到springBoot2.0时,发现数据源出错,看了下官方文档,才发现,默认数据源已修改。使用方式在pom.xml中引入依赖: <dependency> <groupId>org.springframewor原创 2018-10-11 13:16:09 · 33297 阅读 · 3 评论 -
SpringBoot 生成带水印pdf | 中文字体问题
概述生成pdfSpringBoot部署方式以jar包方式运行,在获取字体的时候获取不到,因为在服务器上读取的字体路径为jar包中的路径:file:/root/startup/za-minos-ms.jar!/BOOT-INF/classes!/如上图,这种路径是无法正确读取文件的,所以合理的解决方案是通过流读取,然后在服务器上创建新的文件。读取和创建新文件的代码:/** * Crea...原创 2019-07-30 18:48:21 · 4088 阅读 · 0 评论