以前开发一个项目,要花费不少时间在搭建项目,配置文件上,到现在Spring Boot开箱即用,需要技术栈导入pom就可以了,技术变更带来效率提示是巨大的。有时候我会疑惑,这一切如何得来的,Spring Boot怎么抛弃war部署,抛弃繁琐xml配置。 阅读本文章需要一定的Spring框架知识储备 ...
ReentrantReadWriteLock源码解析
在使用synchronize关键字修饰方法后,只允许一个线程进行访问,这个虽然有利于保证数据安全,却实际场景背道而驰的。实际中数据都是读取多,写入少,我们需要更粗细粒的并发锁。JVM concurrent.locks包给我们提供ReadWriteLock读写锁,内置两把锁,读锁、写锁,满足多个线程并 ...
ThreadLocal源码解析
ThreadLocal 如何实现线程间隔离,为什么ThreadLocal经常容易出现内存溢出。带着这两个问题,在源码中找寻答案。先从设置值开始,看ThreadLocal.set()如何实现的值保存。 public void set(T value) { Thread t = Thre ...
Spring覆盖已初始化bean
现在在配置类里面创建一个bean date @Configurationpublic class DateConfig { @Bean("date") public Date date(){ return new Date(); } ...
Spring事务实现原理
代理对象在哪里创建先从bean被创建后如何产生代理对象开始,在AbstractAutowireCapableBeanFactory.doCreateBean 初始化bean创建后,并且将依赖注入到bean中,在调用initializeBean 方法对刚刚完成依赖注入bean进行一次”初始化” pro ...
Skywalking 插件开发
概念SpanSpan 是分布式跟踪系统中一个重要且常用的概念. 可从 Google Dapper Paper 和 OpenTracing 学习更多与 Span 相关的知识. SkyWalking 从 2017 年开始支持 OpenTracing 和 OpenTracing-Java API, 我们的 ...
Spring Kafka深入学习分析
本文由来,有一个需求要在浏览器输入Kafka topic,消费组提交后自动开启消费,这个做起来比较简单,同事使用了Kafka 驱动包很快速完成这个。我突然想到能不能通过Spring Kafka自身框架完成这个功能,不使用底层驱动包来自做呢。而引出分析整个Spring Kafka 如何实现注解消费信息 ...
认识Spring参数解析器
使用Spring MVC开发的,应该都使用过@RequstBody接收json参数,转换成pojo对象,非常方便阿,但是功能并不是很全面,有点点瑕疵,并不能支持json key 方式注入到String、Integer 这类类型对象。 前端传值 后端接收 结果 {“id”: 3,”name ...
Thread线程知识点讲解
内部属性//线程名,如果创建时没有指定则使用Thread- + 创建序列号private volatile String name; //线程优先级 Java只是给操作系统一个优先级的参考值,线程最终在操作系统的优先级是多少还是由操作系统决定。 private int priority; ...
Spring Bean如何初始化的
做Java都有很多年了,一直有一个疑惑: Spring 如何初始化bean,怎么调用反射实例化对象的,自己动手来解除这个疑惑。过去我认为spring bean对象实例化一直都是由BeanPostProcessor接口实现类去做的,我就是不知道具体那个实现类,下面就去验证下这个猜想。 三级缓存为什么面 ...