![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring-ioc 源码分析
文章平均质量分 83
spring-ioc 源码分析
JellyfishMIX
qunar -- java 开发
展开
-
BeanPostProcessor 源码分析
BeanPostProcessor 的调用时机,在初始化 bean 的 initializeBean 方法中,执行 invokeInitMethods 方法,调用 bean 的 init 方法及此阶段相关生命周期函数来初始化 bean。原创 2023-01-31 22:50:18 · 196 阅读 · 0 评论 -
@PostConstruct 注解源码分析
@PostConstruct 注解加在一个 bean 的方法上,当此 bean 被 spring-ioc 初始化时,自动调用此方法。注意,此类的实例需要作为 bean 交由 spring-ioc 管理时,注解才能生效。实现原理是借助了 BeanPostProcessor 的机制,具体地说,是 InitDestroyAnnotationBeanPostProcessor。原创 2023-01-31 22:39:29 · 754 阅读 · 0 评论 -
tomcat 如何启动的 spring-ioc 容器
本文中我们不关注 tomcat 的机制,只需要知道在这个 xml 中,给 tomcat 指定了上下文加载路径: WEB-INF/web.xml。一个比较常见的 web.xml 配置,可以看到配置了一个 listener 实现 ContextLoaderListener。ServletContextListener 来自于 javax.servlet 包,是 tomcat 与 spring 的衔接接口,可以监听 tomcat servletContext 相关事件,拥有操作 servlet 上下文的能力。原创 2022-12-02 16:26:22 · 604 阅读 · 0 评论 -
ConfigurableBeanFactory 源码分析
可配置的 BeanFactory,声明了对 BeanFactory 各种各样的配置能力,如 bean 的作用域,bean 的 classLoader,bean 的元数据缓存,bean 的表达式解析器,类型转换器,属性编辑器等。实现此接口即拥有对 BeanFactory 的配置能力。原创 2022-10-28 22:38:29 · 311 阅读 · 0 评论 -
FactoryBeanRegistrySupport 源码分析
FactoryBeanRegistrySupport 在 DefaultSingletonBeanRegistry 基础上,增加了对 FactoryBean 的支持。原创 2022-10-24 23:19:17 · 305 阅读 · 0 评论 -
HierarchicalBeanFactory 源码分析
HierarchicalBeanFactory 提供父子容器的层次关系查找能力。至于父容器的设置,需要使用 ConfigurableBeanFactory#setParentBeanFactory由此可看出,spring 的接口设计,把容器的设置和获取给拆开了。原创 2022-10-24 23:18:18 · 194 阅读 · 0 评论 -
SingletonBeanRegistry 源码分析
单例(singleton),是我们使用 Spring IOC 容器时的 bean 实例作用域(scope)。对于单例的维护与管理,Spring 抽象出了 SingletonBeanRegistry 接口来维护。原创 2022-10-24 23:16:58 · 158 阅读 · 0 评论 -
SimpleAliasRegistry 源码分析
SimpleAliasRegistry 是 AliasRegistry 的一个简单实现,实现了管理别名的一些方法。主要作用是将 别名->名字 映射关系存到内存中,提供查找和校验的接口。原创 2022-10-23 16:31:02 · 242 阅读 · 0 评论 -
DefaultSingletonBeanRegistry 源码分析
DefaultSingletonBeanRegistry 保证线程安全的写法比较简单粗暴,只要想保证线程安全,就给一级缓存加锁,synchronized (this.singletonObjects) {},即 full singleton lock。如果一级缓存和二级缓存中没有存在的实例,那就看看三级缓存中有没有构造函数。各级缓存中都根据 beanName 移除对应的 singleton,这里为了保证各级缓存 remove 的原子性,外面对一级缓存加了一个 synchronized 锁。原创 2022-10-23 16:30:24 · 324 阅读 · 0 评论 -
BeanFactory 源码分析
spring 源码中,以 xxFactory 结尾,表示它是一个工厂(接口), 是负责生产和管理 bean 的一个工厂。在Spring中,BeanFactory 是各工厂的顶层接口,也是 IOC 容器的核心接口。BeanFactory 中声明了管理 Bean 的通用方法,如 getBean 和 containsBean 等。BeanFactory 的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。原创 2022-10-23 16:29:01 · 248 阅读 · 0 评论 -
BeanDefinition 及其构造方式 BeanDefinitionBuilder, AbstractBeanDefinition
BeanDefinition 是个接口,AbstractBeanDefinition 是这个接口的实现类,很多常见的 bean 属性在 AbstractBeanDefinition 中。这是经典的工厂模式,抽象出接口去规范工厂生产的实体类的行为。另外 GenericBeanDefinition 只是子类实现,大部分的属性在 AbstractBeanDefinition 中。/*** bean 对应的 class(用一个 Class 对象来表示)/*** bean 的作用范围。原创 2022-10-23 16:27:57 · 2655 阅读 · 0 评论 -
AliasRegistry 源码分析
本文基于 jdk 8, spring-framework 5.2.x 编写。@author/LICENSEGPL-2.0AliasRegistry 声明了管理别名的一些方法,我们先来看一下什么是别名。别名 -> 本名,一个本名可以对应多个别名,如成龙有别名元楼、陈元龙,那么映射关系就是元楼 -> 成龙陈元龙 -> 成龙。原创 2022-10-23 16:25:30 · 108 阅读 · 0 评论