Spring-Ioc容器加载

本文深入探讨了Spring框架中的IoC(控制反转)容器原理,解释了BeanFactory作为核心容器的角色及其基本行为定义。文章还介绍了BeanDefinition用于描述容器中Bean的详细信息,以及BeanDefinitionReader如何读取配置的Bean信息并将其转换为BeanDefinition。此外,以Web IoC容器为例,展示了容器加载的时序过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring ioc源码分析

ioc定义

控制反转,将原先需要我们创建的对象交给统一的容器创建。

核心容器

- BeanFactory:
String FACTORY_BEAN_PREFIX = "&";
Object getBean(String name) throws BeansException;
<T> T getBean(String name, @Nullable Class<T> requiredType) throws BeansException;
Object getBean(String name, Object... args) throws BeansException;
<T> T getBean(Class<T> requiredType) throws BeansException;
<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
boolean containsBean(String name);
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, @Nullable Class<?> typeToMatch) throws NoSuchBeanDefinitionException;
Class<?> getType(String name) throws NoSuchBeanDefinitionException;
String[] getAliases(String name);

如上,BeanFactory只对Ioc容器基本行为做了定义,不关心bean是如何定义和加载的,正如我们只关心工厂能得到什么产品对象,至于工厂如何生产对象无需我们去关心。如果需要查看Ioc的容器的实现只需查看BeanFactory的实现类,ApplicationContext是Spring提供的一个高级Ioc容器,它除了能够提供Ioc容器的基本功能,还为用户提供了很多附加服务。比如,信息源(MessageResource)可以支持国际化,访问资源(ResourcePatternResolver),应用事件(ApplicationEventPublisher)

 

  • BeanDefinition

    此类主要用来描述Ioc容器中Bean的详细信息。

 

  • BeanDefinitionReader

    此类主要用于读取我们配置的Bean信息,将我们配置的Bean转换为BeanDefinition

 

以Web Ioc容器为例

 

Web-Ioc容器加载
Web-Ioc容器加载时序图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值