自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YourBatman

也许当我老了,也一样写代码。不为别的,只为爱好。公众号搜索:BAT的乌托邦...

原创 【小家Spring】从Spring中的(ApplicationEvent)事件驱动机制出发,聊聊【观察者模式】【监听者模式】【发布订阅模式】【消息队列MQ】【EventSourcing】...

前言 说到事件驱动,我心里一直就有一个不解的疑问:它和我们老生长谈的一些概念比如:【观察者模式】【发布订阅模式】【消息队列MQ】【消息驱动】【EventSourcing】等等是一回事吗? 可能很多小伙伴会回答:差不多。确实,很有深意的三字回答。 那么本文将以Spring的事件驱动机制为引子,好好的...

2019-03-26 20:56:08 2542 0

原创 【小家Spring】Spring标准处理组件大合集(ParameterNameDiscoverer、AutowireCandidateResolver、ResolvableType。。。)

前言 本篇博文更像是一个工具文章,在阅读Spring源码的时候,经常会遇见一些处理器、提供器之类的组件,有的时候不深入去理解它的含义,确实还读不下去了。 为了方便自己流畅的阅读下去,特开本文记录一些关键的,使用的Spring提供的处理组件,尽量的解释清楚它们的作用甚至原理,以便我们能更自由的阅读,...

2019-03-25 21:07:20 964 1

原创 【小家Java】你真的了解Java泛型参数吗?细说java.lang.reflect.Type(ParameterizedType、TypeVariable、WildcardType...)

前言 咋一看标题,你可能会说。不就是泛型吗,平时都使用着呢,没什么难的吧。 感觉了解了,但是真正的深入才知道自己了解甚少! 没有泛型的时候,只有原始类型。此时,所有的原始类型都通过字节码文件类Class类进行抽象。Class类的一个具体对象就代表一个指定的原始类型 泛型出现之后,扩充了数据类型。从...

2019-03-25 20:29:01 2295 0

原创 Spring元数据Metadata的使用,注解编程之AnnotationMetadata,ClassMetadata、MetadataReaderFactory【享学Spring】

`Spring`在2.0的时候就支持了基于`XML Schema`的扩展机制,让我们可以自定义的对xml配置文件进行扩展(四大步骤,有兴趣的可以自己学习),比如鼎鼎大名的`Dubbo`它就扩展了xml,用它来引入服务或者导出服务。 随着`Spring3.0+`的发展,xml慢慢的淡出了我们的视野,...

2019-03-24 21:01:02 7986 2

原创 【小家Spring】Spring贡献的多个注解相关的工具类:AnnotationUtils、AnnotatedElementUtils、AnnotationConfigUtils...

AliasFor解释的使用场景 前言 本文主要聊聊Spring提供的多个关于注解相关的工具类:AnnotationUtils和AnnotatedElementUtils等等 因为很多逻辑都封装在了工具类里面,因此要理解Spring的深层意思,有时候不了解工具类也是比较麻烦的 虽然说都是Spring...

2019-03-24 19:32:21 2481 2

原创 【小家Spring】Spring IoC容器中核心定义之------BeanDefinition深入分析(RootBeanDefinition、ChildBeanDefinition...)

前言 在前面分析Spring IoC容器的时候,贯穿全文的一个概念:Bean定义信息。它是Spring容器的一个核心概念,那么本文就深入分析一下BeanDefinition这个接口(类)。 Spring容器启动的过程中,会将Bean解析成Spring内部的BeanDefinition结构。 不管是...

2019-03-23 17:03:34 2152 6

原创 【小家Spring】高性能关键技术之---体验Spring MVC的异步模式(ResponseBodyEmitter、SseEmitter、StreamingResponseBody) 高级使用篇

前言 上篇博文:【小家Spring】高性能关键技术之—体验Spring MVC的异步模式(Callable、WebAsyncTask、DeferredResult) 基础使用篇 介绍了Spring MVC异步模式的基本使用,相信小伙伴们基本的使用都能运用自如了。 那么本篇文章主要介绍一下异步模式的...

2019-03-23 10:23:54 2653 4

原创 【小家Spring】控制Spring IoC容器对Bean(含@Configuration配置类)的加载顺序(@DependsOn注解的使用)

前言 首先,先说明一点:此篇博文相对来说是比较小的专题,只讲解Spring IoC加载Bean的顺序问题。 为了更好的了解这里面的原理,建议先了解Spring容器内部对Bean执行初始化的原理,因此推荐下面博文(若已了解,请忽略): 【小家Spring】Spring IOC容器启动流程 Abstr...

2019-03-21 18:02:39 5507 4

原创 【小家Spring】高性能关键技术之---体验Spring MVC的异步模式(Callable、WebAsyncTask、DeferredResult) 基础使用篇

前言 现在已经在2019年,这个时候再来谈Spring MVC的异步模式,好像有点老掉牙了。毕竟现在都Spring5的时代了,甚至将来肯定是webflux的天下了。 而Spring MVC的异步请求模式是Spring3.2就推出了,它是基于基Servlet3.0规范实现的,而此规范是2011年推出...

2019-03-20 21:38:13 2423 13

原创 【小家Spring】为脱离Spring IOC容器管理的Bean赋能【依赖注入】的能力,并分析原理(借助AutowireCapableBeanFactory赋能)

前言 咋一看标题,小伙伴们是否还有点小激动呢?觉得这怎么可能呢? 可能我们(大众)都是这样认为:自从用上了Spring这个优秀的框架,一般小伙伴们都是一言不合就把对象塞进Spring的IOC容器里面,交给它来替我们管理。 不可否认的是,把Bean交给Spring管理,确实极其的方便,优点一大把,并...

2019-03-19 18:14:05 1400 2

原创 【小家Spring】Spring解析@ComponentScan注解源码分析(ComponentScanAnnotationParser、ClassPathBeanDefinitionScanner)

前言 前面我在这篇博文:【小家Spring】Spring解析@Configuration注解的处理器:ConfigurationClassPostProcessor(ConfigurationClassParser) 解释Spring解析@Configuration的时候,提到过了解析:@Prop...

2019-03-18 18:05:52 963 2

原创 【小家Spring】BeanFactory体系和ApplicationContext体系,两大体系各接口分析、区别和联系

前言 前面已经讲述了很多Spring容器启动、解析、依赖注入等等源码层面的东西了,但是小伙伴有没有一种感觉就是:Spring的设计者把面向对象使用到了极致(使用得非常的好),并且它吧职责单一原则也是使用到了极致。 它各个功能区块,通过接口都进行隔离得很开,这是让Spring能组件化开发,可插拔,变...

2019-03-17 21:52:14 1140 0

原创 【小家Spring】Spring IOC容器启动流程 AbstractApplicationContext#refresh()方法源码分析(二),Spring容器启动/刷新的完整总结

前言 在上一篇文章:【小家Spring】Spring IOC容器启动流程 AbstractApplicationContext#refresh()方法源码分析(一)中已经介绍了前五步,现在Spring IOC容器的工厂环境已经都准备好了。 Bean工厂可以简单理解为一个钩子容器,里面注册有众多的B...

2019-03-16 23:34:20 2391 12

原创 【小家Spring】Spring向容器注册Bean的高级应用:@Import、DeferredImportSelector、ImportBeanDefinitionRegistrar的使用

前言 关于@Import在之前的文章里,也都零散的提到过多次,也支出了它的重要性,甚至它的一个解析过程。 但是由于@Import模式向容器导入Bean确实非常非常的重要,特别是在注解驱动的Spring项目中、@Enablexxx的设计模式中有大量的使用,在当下最流行的Spring Boot中,可以...

2019-03-15 14:07:02 1245 0

原创 【小家Spring】细说Spring IOC容器的自动装配(@Autowired),以及Spring4.0新特性之【泛型依赖注入】的源码级解析

前言 前面我发布了Spring IOC容器的刷新(初始化)过程,以及Spring 容器的Bean的实例化、初始化过程。其中有一个步骤小伙伴们比较关心,也提问的比较多,那就是泛型依赖注入。鉴于之前对这一块描述得也不是很详细,鉴于此处还是比较重要的,因此本文专门用篇幅聊聊这个事 看本篇文章之前,建议至...

2019-03-13 21:50:05 2737 4

原创 【小家Spring】AbstractAutowireCapableBeanFactory#populateBean实现Bean的属性赋值和initializeBean对Bean的初始化

前言 在上一篇博文:【小家Spring】AbstractBeanFactory#getBean()、doGetBean完成Bean的初始化、实例化,以及BeanPostProcessor后置处理器源码级详细分析 源码分析的时候,留下两个重要的步骤还没有说,一个是属性赋值的populateBean(...

2019-03-10 16:09:00 2048 0

原创 【小家Spring】AbstractBeanFactory#getBean()、doGetBean完成Bean的初始化、实例化,以及BeanPostProcessor后置处理器源码级详细分析

前言 这边博文,主要讲解我们IOC容器的主菜:Bean的实例化。 通过之前跟踪Spring IOC刷新的源码,我们所有的剩余的单例Bean都是通过此处来进行初始化的。最重要的一个方法就为:DefaultListableBeanFactory#preInstantiateSingletons 然后内...

2019-03-10 10:54:50 2504 13

原创 【小家Spring】Spring IOC容器启动流程 AbstractApplicationContext#refresh()方法源码分析(一)

前言 还记得我在这篇博文:【小家Spring】Spring容器(含父子容器)的启动过程源码级别分析(含web.xml启动以及全注解驱动,和ContextLoader源码分析) 里留了几个非常重要,但是没有解释的方法。其中有一个非常重要的方法ApplicationContext#refresh()方...

2019-03-04 15:01:21 5150 14

原创 【小家Spring】Spring解析@Configuration注解的处理器:ConfigurationClassPostProcessor(ConfigurationClassParser)

前言 在Spring3.0以后,官方推荐我们使用注解去驱动Spring应用。那么很多人就一下子懵了,不需要xml配置文件了,那我的那些配置项怎么办呢? @Configuration是Spring3.0推出来的注解,用来代替xml配置文件。 若一个Class类被标注了这个注解,我们就认为这个类就是一...

2019-03-03 22:50:28 2868 13

原创 【小家Spring】Spring容器加载Bean定义信息的两员大将:AnnotatedBeanDefinitionReader和ClassPathBeanDefinitionScanner

前言 在分析Spring IOC容器启动流程的时候,在加载Bean定义信息BeanDefinition的时候,用到了两个非常关键的类:AnnotatedBeanDefinitionReader和ClassPathBeanDefinitionScanner。它俩完成对Bean信息的加载。 因此为了更...

2019-03-01 20:04:03 4585 11

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