glmapper

glmapper

从程序的世界中全身而退

一文详解蚂蚁金服分布式链路组件 SOFATracer 的埋点机制
SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 TraceId 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的,这些链路数据可用于故障的快速发现,服务治理等。 GITHUB 地址:https://github.com/sofastack/sofa-tracer/pulls (欢迎 star)官方文件地址:https://www.sofastack.tech/projects/sofa-tracer/overview/ 2018 年末时至 2019 年初,SOFA 团队发起过 剖析-sofatracer-框架 的源码解析系列文章。这...
SpringBoot 源码系列-自动配置及 starter 机制解析
一家之言,如有任何错误,请批评指出,不胜感激 本篇主要来讨论研究两个问题:1、什么自动配置,2、如何编写自动配置 在使用 Spring 作为项目开发框架的过程中,当需要集成某个组件时,通常需要大量的 xml 配置才可以让项目工程 run 起来,下面先以 mybatis 为例,来看下如何使用 mybatis-Spring 模块,需要哪些必不可少的依赖和配置。 使用 mybatis-spring任何组件的集成都绕不过两个问题:依赖和配置,关于配置在这篇文章中介绍了配置的一些点,有兴趣的可以看下。 依赖从 mybatis 的官方文当可以了解到,要使用 MyBatis-Spring 模块,...
SpringBoot 实践系列-外部化配置优先级问题
本文主要针对 spring.profiles.active、spring.config.location 以及 spring.config.additional-location 的作用机制及优先级问题进行实践对比。 本文案例工程已上传 github 仓库:https://github.com/glmapper/springboot-series-guides/tree/master/guides-properties spring.profiles.active除了 application.properties 文件之外,profile-specific 配置也可以通过以下命名方式...
SpringBoot 源码系列-配置解析
注:本文基于 SpringBoot 2.1.11 版本 说到配置,你能想到的是什么? 在日常的开发和运维过程中,可以说配置都是及其重要的,因为它可能影响到应用的正常启动或者正常运行。相信在之前 Spring xml 时代,很多人都会被一堆 xml 配置折腾的够呛,除此之外,还有像数据库连接配置、缓存配置、注册中心配置、消息配置等等,这些相信大家都不会陌生。 配置对于开发人员或者运维人员来说可以比喻成一把”钥匙“,可以通过这把”钥匙“让我们的程序 run 起来,可以通过这把 ”钥匙“ 开启或者关闭应用程序的某一个功能。那么为什么会需要配置,对于一个应用来说,配置的意义又是什么呢? 配...
SpringBoot 源码解析系列 & SpringBoot 实践系列综述
源码解析系列: SpringBoot 系列-FatJar技术解析 SpringBoot 系列-启动过程解析 SpringBoot 系列-事件机制解析 SpringBoot 系列-Bean 的生命周期与扩展 SpringBoot 系列-日志框架解析 SpringBoot 系列-资源访问解析 SpringBoot 系列-内嵌Web容器解析 SpringBoot 系列-配置解析 SpringBoot 系列-自动配置及 starter 机制解析 SpringBoot 实践-外部化配置优先级问题 实践系列 SpringBoot 实践-集成 RocketMQ SpringBoot 实践-Kaf...
git ssh 配置及使用
配置使用 ssh 方式来提交和克隆代码大概可以分为以下几个步骤: 设置 Git 的 user name 和 email:(如果是第一次的话) 检查是否已经有 SSH Key。 生成密钥 添加密钥到 ssh-agent 登陆 github, 添加 ssh 设置 Git 的 user name 和 email1234# 用户名替换成自己的用户名git config --global user.name "glmapper"# 邮箱替换换成自己的邮箱git config --global user.email "glmapper_2018@163.com" 检查是否已经有 SSH Key...
SpringBoot 源码系列-Bean 的生命周期与扩展
本篇基于 SpringBoot 2.2.2.RELEASE 版本,Spring 各个版本之间多少存在一些差异,不过主流程基本相同;大家在阅读过程中需关注这点。 继续承接上一篇 SpringBoot 系列-启动过程分析,本篇围绕一个 bean 的生命周期,对 bean 进行一些修改和扩展。本篇将涉及到以下主要内容: 阅读之前 BeanDefinition 解析时机和过程 invokeBeanFactoryPostProcessors 执行过程分析 invokeBeanDefinitionRegistryPostProcessors 执行过程分析 BeanFactoryPostP...
SpringBoot 源码系列-日志详解
Spring Boot 使用 Commons Logging 进行所有内部日志记录,但保留底层日志实现。为 Java Util Logging、Log4J2 和 Logback 提供了默认配置。在每种情况下,loggers 都预先配置为使用 console 输出,并且也提供可选的文件输出。 默认情况下,如果使用 “starters”,则使用 Logback 进行日志记录。还包括适当的 Logback 路由,以确保使用 Java Util 日志记录、Commons 日志记录、Log4J 或 SLF4J 的依赖库都能正常工作。 下面先来看一个最简单的 SpringBoot demo 工程的日...
SpringBoot 实践系列-资源访问
原文链接:https://smarterco.de/java-load-file-from-classpath-in-spring-boot/ 简介当我们创建一个 SpringBoot web 应用时,有时候需要从 classpath 去加载一些文件,这里记录下在 war 和 jar 两种不同文件格式下加载文件的解决方案 The ResourceLoader在 Java 中 ,我们可以使用当前线程的 classLoader 去尝试加载文件,但是 Spring Framework 为我们提供了更加优雅的解决方案,例如 ResourceLoader。 使用 ResourceLoader ...
SpringBoot 源码系列-启动过程分析
个人博客:glmapper更多请关注 glmapper工作室 微信公众号 SpringBoot 作为目前非常流行的微服务框架,它使得构建独立的 Spring 生产级应用变得非常简单,因此受到很多互联网企业的青睐。 最近在写 SOFATracer 集成 Spring Cloud Stream RocketMQ 的过程中,遇到了一些问题,比如:BeanPostProcessor 不生效,如何在 BeanPostProcessor 不生效的情况下去修改一个 Bean 等,这些问题其实都是和 Bean 的生命周期有关系的,当然也和容器启动的过程有关系。SpringBoot 的启动过程对于我来...
avatar
Glmapper@leishu
分享与学习