Spring 内部工具
专门介绍Spring框架自己使用的一些内部工具,这些工具通常抽象建模和封装了某些关注点,对这些工具的熟悉,有助于提升我们对框架内部工作原理以及整体架构的理解。
安迪源文
小步快走
展开
-
Spring Context : EventListenerMethodProcessor
1. 概述EventListenerMethodProcessor 是 Spring 事件机制中非常重要的一个组件。它管理了一组EventListenerFactory组件,用来将应用中每个使用@EventListener注解定义的事件监听方法变成一个ApplicationListener实例注册到容器。换句话讲,框架开发者,或者应用开发者使用注解@EventListener定义的事件处理方法,如果没有EventListenerMethodProcessor的发现和注册,是不会被容器看到和使用的。Ev原创 2020-05-16 20:49:05 · 1403 阅读 · 0 评论 -
Spring 工具类 PlaceholderConfigurerSupport (抽象基类)
概述Spring PlaceholderConfigurerSupport是一个抽象基类,抽象了bean定义属性值中的占位符解析的功能。它继承自PropertyResourceConfigurer。基类已经定义了要在bean容器后置处理阶段对容器中所有bean定义属性进行处理,而PlaceholderConfigurerSupport则进一步约定了要进行的属性值处理是:解析属性值中的占位符,同时...原创 2019-02-03 15:54:59 · 2892 阅读 · 0 评论 -
Spring 工具分类 : 依据组织形式分类
Spring框架使用了很多工具,它们有各自不同的功能作用,但我们还是可以根据一些共同点对它们进行归类。比如根据它们所操作的实体概念(也就是业务目的),或者根据其组织形式(也就是所谓的"模式")。本文基于工具组织形式的相似性对Spring工具做一些梳理,以便再次遇到一个Spring工具时,我们可以快速理解和掌握其主要业务功能和目的。下面是几种常见的Spring工具的类型 :原创 2019-02-03 09:49:08 · 467 阅读 · 0 评论 -
Spring 工具类 PropertyResourceConfigurer(抽象基类)
概述Spring PropertyResourceConfigurer是一个抽象基类,继承自PropertiesLoaderSupport,并实现了接口BeanFactoryPostProcessor。它抽象了容器启动时,BeanFactory后置处理阶段对容器中所有bean定义中的属性进行配置的一般逻辑,属性配置所使用的属性来源是基类PropertiesLoaderSupport方法所规定的那...原创 2019-02-03 10:59:43 · 2515 阅读 · 0 评论 -
Spring PropertiesLoaderSupport 源代码分析
概述Spring PropertiesLoaderSupport是一个抽象基类,它抽象了从不同渠道加载属性的通用逻辑以及这些属性使用时优先级上的一些考虑。PropertiesLoaderSupport自身是一个抽象基类,它所提供的属性读取功能主要供实现子类使用。PropertiesLoaderSupport的实现子类有PropertiesFactoryBean,PropertyResource...原创 2019-02-02 14:11:06 · 1125 阅读 · 0 评论 -
Spring 一般工具建模
本文列出Spring的对一些一般工具的抽象建模,它们可能是接口,也可能是类。这里所谓"工具",一般是是指它能对某个名词实体做某种动词性操作,比如"属性解析器",表示这是一个"工具",它能对"属性"进行"解析"。所谓"一般"工具,指的是该工具在Spring框架层面都适用,而不是仅应用在某个原创 2019-02-02 16:24:29 · 492 阅读 · 0 评论 -
Spring 工具:PropertySourcesPropertyResolver 从PropertySources中解析属性
概述Spring框架将某个属性源抽象成了类PropertySource,又将多个属性源PropertySource抽象为接口PropertySources。对某个PropertySource对象中属性的解析,抽象成了接口PropertyResolver,而类PropertySourcesPropertyResolver则是Spring用于解析一个PropertySources对象中属性的工具类。...原创 2018-11-24 20:33:03 · 3157 阅读 · 0 评论 -
Spring 工具建模:PropertyResolver 属性解析工具基本功能建模
概述Spring 使用接口PropertyResolver抽象了从底层来源获取属性的基本功能,和解析${...}这样的占位符的功能。至于底层属性源具体是什么,如何抽象,是一个属性源还是聚合了多个属性源,这些都由实现子类在实现层面考虑。该接口位于org.springframework.core.env。源码解析该接口定义的功能如下 :boolean containsProperty...原创 2019-02-02 15:27:29 · 962 阅读 · 0 评论 -
Spring 工具类 ConfigurationClassEnhancer
概述Spring中存在这样一个工具类ConfigurationClassEnhancer,它会对应用中每个配置类,也就是一般通过@Configuration注解定义的类进行一个增强。通过增强以后,配置类中使用@Bean注解的bean定义方法就不再是普通的方法了,它们具有了如下跟bean作用域有关的能力,以单例bean为例 :1. 它们首次被调用时,相应方法逻辑会被执行用于创建bean实例;2...原创 2019-01-31 21:40:26 · 2758 阅读 · 0 评论 -
Spring资源加载器抽象和缺省实现 -- ResourceLoader + DefaultResourceLoader
概述对于每一个底层资源,比如文件系统中的一个文件,classpath上的一个文件,或者一个以URL形式表示的网络资源,Spring 统一使用 Resource 接口进行了建模抽象,相应地,对于这些资源的加载,Spring使用了 ResourceLoader 进行了统一建模抽象。通过ResourceLoader,给定其可以接受的资源路径,我们可以获得对应资源的Resource对象,然后进行进行相...原创 2018-12-31 18:13:50 · 779 阅读 · 1 评论 -
Spring AOP 内部工具类 : BeanFactoryAspectJAdvisorsBuilder
概述BeanFactoryAspectJAdvisorsBuilder是一个Spring AOP内部工具类,该工具类用来从bean容器,也就是BeanFactory中获取所有使用了@AspectJ注解的bean,最终用于自动代理机制(auto-proxying)。跟该工具类完成类似工作的另外一个工具类是BeanFactoryAdvisorRetrievalHelper,只不过BeanFact...原创 2019-01-14 18:40:28 · 1156 阅读 · 0 评论 -
Spring AOP 内部工具类 : BeanFactoryAdvisorRetrievalHelper
概述BeanFactoryAdvisorRetrievalHelper是一个Spring AOP内部工具类,该工具类用来从bean容器,也就是BeanFactory中获取所有Spring顾问Advisor bean。这里的 Spring Advisor bean指的是实现了接口org.springframework.aop.Advisor的bean。该类具体的使用可以参考Abstract...原创 2019-01-14 13:15:09 · 678 阅读 · 0 评论 -
Spring 工具 ConfigurationClassBeanDefinitionReader 注册配置类中的bean定义
读取一组带有完整解析数据的ConfigurationClass集合,基于他们所携带的信息向给定BeanDefinitionRegistry 注册其中所有的bean定义。仅对外提供唯一服务方法 :void loadBeanDefinitions(Set<ConfigurationClass> configurationModel)完整的实原创 2017-11-28 11:52:29 · 3122 阅读 · 0 评论 -
Spring 工具类 ClassPathBeanDefinitionScanner 组件Bean定义扫描
ClassPathBeanDefinitionScanner是一个从指定包内扫描所有bean定义的Spring工具。工作时,它接收一组包的名称,然后在这些包内扫描所有的类,查找其中符合条件的bean组件定义并将这些bean组件定义注册到容器。这些bean定义注册到容器时具体使用的类为ScannedGenericBeanDefinition,这是Spring bean定义模型接口BeanDefin...原创 2019-01-03 16:58:28 · 4027 阅读 · 0 评论 -
Spring 工具类 ConfigurationClassParser 分析得到配置类
简介Spring的工具类 ConfigurationClassParser 用于分析一个 @Configuration 注解的类,产生一组ConfigurationClass对象。其分析过程主要是递归分析注解中隐含的@Import,找出其中所有的配置类,然后返回这组配置类。原创 2017-11-16 12:19:50 · 14394 阅读 · 6 评论 -
Spring 工具类 ComponentScanAnnotationParser @ComponentScan注解处理器:扫描和注册组件bean
概述ComponentScanAnnotationParser是Spring的一个内部工具,它会基于一个类及该类上的@ComponentScan注解属性分析指定包(package)获取其中的bean定义。所分析的包可以是多个包。你可以简单地将ComponentScanAnnotationParser理解成注解@ComponentScan的处理器:输入 : @ComponentScan...原创 2019-01-02 18:18:20 · 2718 阅读 · 0 评论 -
Spring 内部工具类 -- AnnotationConfigUtils
Spring 内部工具类 AnnotationConfigUtils原创 2017-11-14 12:19:27 · 3495 阅读 · 0 评论