jdk里的CAS操作实现
在看轻量级锁加锁源码时,顺便看了下 jdk 里的 CAS 操作实现,本文记录下相关代码。
在看轻量级锁加锁源码时,顺便看了下 jdk 里的 CAS 操作实现,本文记录下相关代码。
PropertyPlaceholderConfigurer
用于加载指定的配置文件,替换 bean 配置中的占位符为指定的属性值。
在 dubbo的Reference注解实现原理 中提到,@Reference
注解用于实现 RPC client 代理的自动注入,这是通过 ReferenceAnnotationBeanPostProcessor
来实现的。若要让其生效,还需要在这之前将其注册到 BeanFactory 中。
Spring 通过 AbstractAutoProxyCreator
来创建 AOP 代理,AbstractAutoProxyCreator 是一个抽象类,它实现了 BeanPostProcessor
接口,用于在 bean 初始化完成之后创建它的代理
dubbo 是一个流行的 RPC 框架,它提供了一个 @Reference
注解,用于配置依赖的远程接口,完成代理类的自动注入。本文主要关注 @Reference
注解的实现原理。
AbstractApplicationContext
是 ApplicationContext
的一个抽象实现类。和普通的 BeanFactory
不同的是,ApplicationContext
可以检测到它的内部 BeanFactory
中定义的特殊 Bean:自动完成 BeanFactoryPostProcessor
、BeanPostProcessor
、ApplicationListener
的注册。
XmlBeanFactory
是一个最简单的 BeanFactory
实现,它支持通过 xml 的形式配置和管理 bean。本文主要关注其解析 xml
和加载 BeanDefinition
的流程。
Spring 提供了 @Autowired
注解,可用于自动注入所需的 bean,与 xml 配置相比更加简洁,本文主要关注 @Autowired
注解的实现原理。
InstantiationAwareBeanPostProcessor
是 BeanPostProcessor
的子接口,新增了一个实例化之前(BeforeInstantiation)的回调、一个实例化之后(AfterInstantiation)填充 property 之前的回调
MergedBeanDefinitionPostProcessor 是 Spring 提供的一种后处理器,它可以用于对 merged bean 进行一些操作。