自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 mybatis源码解析(2):mapper执行调用

本文是结合spring boot使用mybatis源码来解析mybatis源码,使用mybatis-spring-boot-starter.1.3.0、spring-boot-2.1.6.RELEASE我们大致分为两篇来介绍。第一篇介绍解析mapper xml文件,实例化相关bean;第二篇介绍mapper执行调用。1. 使用示例结合上一篇的示例一起。TestService@Componentpublic class TestService { @Autowired .

2021-01-29 15:05:29 210

原创 mybatis源码解析(1):加载解析Mapper.xml

本文是结合spring boot使用mybatis源码来解析mybatis源码,使用mybatis-spring-boot-starter.1.3.0、spring-boot-3.2.1.RELEASE我们大致分为两篇来介绍。第一篇介绍解析mapper xml文件,实例化相关bean;第二篇介绍mapper执行调用。目录1. 使用示例2. 启动源码解析创建SqlSessionFactory,解析mapper xml文件1. MybatisAutoConfiguration2. SqlSessio.

2021-01-20 17:34:22 252 2

原创 logback妙用之自定义日志格式、异步打印日志

我们上一篇分析了logback的源码和自定义Appender的妙用,这一篇介绍一下自定义日志格式和异步打印日志的妙用。Logback源码解析及自定义Appender、自定义Logback.xml标签目录1. 自定义日志格式0. 背景介绍1. 自定义ClassicConverter2. Logback.xml配置2. 异步打印日志1. 自定义日志格式0. 背景介绍logback.xml文件中,每一个Appender都会定义如下日志打印格式。其中%d,%thread,%msg都是有代表含义的。如果我们

2021-01-07 14:58:19 1677 2

原创 logback源码解析及自定义Appender、自定义logback.xml标签

本文基于slf4j 1.7.25目录0. 基本概念介绍1. 简单实用示例2. 加载解析配置logback配置文件源码解析3. 加载解析配置文件拓展点3.1 标签对应复杂对象,默认用NestedComplexPropertyIA解析执行3.2 标签对应的是简单对象,默认用NestedBasicPropertyIA解析执行4. 使用Logger打印流程解析及拓展点### 5. 总结logback源码解析分为两条线:一、加载解析配置文件;二、使用Logger打印日志。0. 基本概念介绍Appende.

2021-01-07 14:23:14 2210

原创 SpringAop实现原理及源码解析

本文基于 SpringBoot5.1.8.RELEASE 版本源码解析Spring IOC源码解析(1)Spring IOC源码解析(2)Spring拓展点及调用顺序总结我们直接通过SpringBoot项目来调试,建议阅读此文前先熟悉 Spring IOC源码,对SpringBoot自动装配有了解。目录1. AnnotationAwareAspectJAutoProxyCreator2. AnnotationAwareAspectJAutoProxyCreator的注册3. AOP源码解析4..

2020-12-31 15:25:50 489

原创 Spring循环依赖及三级缓存源码解析

本文基于 SpringBoot5.1.8.RELEASE 版本源码解析Spring IOC源码解析(1)Spring IOC源码解析(2)Spring拓展点及调用顺序总结目录1. 图例解释说明1. 循环依赖流程图2. 举例说明上图2. 源码解析1. AbstractBeanFactory.doGetBean1.1 getSingleton(beanName) (DefaultSingletonBeanRegistry)(这个我们重点关注)1.2 DefaultSingletonBeanRegi.

2020-12-29 15:56:24 518 1

原创 Spring拓展点及调用顺序总结

本文基于 SpringBoot5.1.8.RELEASE 版本源码解析Spring IOC源码解析(1)Spring IOC源码解析(2)Spring拓展点

2020-12-25 16:39:19 271

原创 Spring IOC源码解析(2)

本文基于 SpringBoot5.1.8.RELEASE 版本源码解析Spring IOC源码解析(1)目录1. AbstractApplicationContext.finishBeanFactoryInitialization(beanFactory)2. DefaultListableBeanFactory.preInstantiateSingletons3. getBean(beanName)4. AbstractAutowireCapableBeanFactory.createBean我.

2020-12-25 16:34:39 134

原创 Spring IOC源码解析(1)

本文基于SpringBoot5.1.8.RELEASE 版本源码解析目录0. 代码示例总概要. AbstractApplicationContext.refresh1. obtainFreshBeanFactory(). 创建BeanFactory,加载/注册BeanDefinition2. prepareBeanFactory(). 准备BeanFactory3. postProcessBeanFactory(beanFactory)4. invokeBeanFactoryPostProcessor.

2020-12-22 11:24:49 218 2

原创 SpringBoot动态刷新Environment配置@Value@ConfigurationProperties(5)

本文基于SpringBoot 2.1.6.RELEASE版本SpringBoot源码解析:Environment加载配置原理(1)SpringBoot源码解析:Environment获取配置原理(2)SpringBoot源码解析:@ConfigurationProperties怎么绑定Environment原理探究(3)SpringBoot源码解析:@Value怎么绑定Environment注入属性值(4)前文我们介绍了@ConfigurationProperties @Value的基本原理。.

2020-12-17 14:52:45 6743 1

原创 ElasticJob的高可用之失效转移问题

本文基于elastic-job.2.1.5版本本文主要介绍分布式环境下,有一台作业服务器宕机或网络异常离线情况下,导致该服务器上的分片任务丢失,这种情况下该如何处理。1. 代码示例@ElasticJobConf这个用法是笔者自己写的一个Elastic-job-spring-boot-starter上的一个自定义注解。上面的参数极其含义和elastic-job原生一模一样,所以阅读不要有障碍。//任务名称,cron表达式:每5s执行一次,分片总数,分片参数,是否覆盖zk@ElasticJob.

2020-12-11 18:18:05 675

原创 SpringBoot源码解析:@Value怎么绑定Environment注入属性值(4)

本文基于springboot2.1.6.RELEASE源码解析上文我们简单介绍了一下SpringBoot怎么创建Spring的应用上下文/容器。(不清楚的同学可以看一下)。其中就创建了一个很重要的bean:AutowiredAnnotationBeanPostProcessor。这个bean就是用来注入bean及相关属性值的(@Autowired,@Value)。其实@Value是属于Spring本身就有的特性,我们放到此处主要是对照@ConfigurationProperties分析一下。1..

2020-12-07 17:30:17 1129

原创 SpringBoot源码解析:SpringBoot怎么创建Spring应用上下文/容器

本文是基于springboot2.1.6 RELEASE源码解析本文主要介绍了一下SpringBoot怎么创建spring应用上下文,没有详细介绍流程,主要是为了让读者便于理解后续博文做一个简单介绍(后续需要再做完整源码解析补充)。目录1. 构造SpringApplication2. 创建应用上下文ApplicationContext,注册解析Bean的BeanPostProcessor3. 刷新应用上下文1. 构造SpringApplication简单看一下构造方法public Spri.

2020-12-07 11:22:16 334

原创 SpringBoot源码解析:@ConfigurationProperties怎么绑定Environment原理探究(3)

本文基于springboot2.1.6.RELEASE源码解析阅读本文必备知识:Spring Configuration类的解析,SpringBoot自动装配,Spring Environment加载配置文件/读取配置文件。(不具备此技能,也可以尝试阅读)可参考前文SpringBoot源码解析:Environment加载配置原理(1)SpringBoot源码解析:Environment获取配置原理(2)1. 先看一个简单使用示例使用方式一:Conpon.class@Configura.

2020-12-04 15:17:28 639

原创 SpringBoot源码解析:Environment获取配置原理(2)

本篇基于SpringBoot 2.1.6源码解析上一篇我们介绍了springboot怎么把配置文件的值加载到environment中。这篇我们介绍一下,怎么从environment中读取值SpringBoot源码解析:Environment加载配置原理(一)1. 传统方式获取environment配置demospringboot启动类,传统从environment中获取值的方式environment.getProperty@SpringBootApplication(scanBasePac.

2020-12-02 17:48:02 3527 3

原创 SpringBoot源码解析:Environment加载配置原理(1)

本文是基于springboot2.1.6源码解析本篇主要是介绍,spring怎么加载解析配置文件到environment中。至于怎么获取environment中配置,怎么绑定environment到对象中,另开篇再介绍。不想看源码,直接看总结1. SpringApplication介绍SpringApplication的run方法 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch =.

2020-12-01 17:16:47 1717 2

原创 mybatis-plus使用oracle序列生成器不生效问题

mybatis-plus是一个很好的mybatis增强工具,主要因为其CRUD操作可以减少很多代码的编写,提高开发效率,因此引入了现有项目。有兴趣同学可以查看官方文档学习:https://baomidou.com/0. 背景介绍项目是springboot 2.1.6项目,且有多个数据源,每个数据源都需要spring事务管理本篇基于mybatis-plus 3.3.0如下为其中一个数据源的事务管理配置@Configuration@MapperScan(basePackages = "com.z

2020-11-30 11:13:56 3319 5

原创 RocketMQ原理及源码解析之Consumer消息消费

本文源码分析是基于RocketMQ 4.6.0;文中分析,省略了部分代码1. Consumer消费设计RocektMQ消费设计图(并发消费和顺序消费基本流程相似,顺序消费存在加锁解锁过程)。按照图中从上到下标注的序号顺序分析此图:​ 虚线框都是consumer客户端,也就是我们的实际业务系统;Broker是MQ的消息存储服务器RebalanceImpl(最上面Rebalance):此类主要是做了消息的负载均衡,就是把所有从nameSrv获取到的MessageQueue的信息按照一定的策略分.

2020-11-26 15:07:30 695 1

原创 mybatis foreach批量操作栈溢出java.lang.StackOverflowError

1. 问题有一个定时任务,需要批量插入数据库,一次性插入200条数据没有问题,一次性插入500条,就没有反应了开发环境本地测试没有问题,测试和生产都有问题。2. 在Skywalking中查找到错误日志异常堆栈如下:stack:java.lang.StackOverflowErrorat com.alibaba.druid.sql.dialect.oracle.visitor.OracleOutputVisitor.visit(OracleOutputVisitor.java:621)at

2020-11-25 17:19:28 1433

原创 怎么设置java线程池保证处理任务不丢失

备注以下代码没有shutdown线程池Java,spring线程池同理前提创建一个线程池,线程池大小固定为10,阻塞队列大小为10,最大线程池为20,拒绝策略为默认AbortPolicy。分页处理,有100页任务需要处理,需要处理100次1. 常见固定线程池处理 public static void main(String[] args) { ExecutorService executorService = new ThreadPoolEx

2020-11-25 16:28:36 4349 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除