Spring IoC 源码分析 (基于注解) 一

本文深入探讨Spring的IoC(控制反转)原理,特别是基于注解的实现。分析了IoC的两种方式,重点在于基于注解的IoC,解释了@Bean、@Controller、@Service的作用以及@CompoentScan的工作机制。通过源码分析,揭示了如何通过ClassPathBeanDefinitionScanner扫描注解并注册到IOC容器,以及默认的过滤规则,即包含@Component、@ManagedBean和@Named的类会被扫描。

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

一、 IoC 理论

IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。

二、IoC方式

Spring为IoC提供了2种方式,一种是基于xml,另一种是基于注解。

  • 标签来定义bean,进行管理。
  • @Bean注解来定义bean,进行管理。

本次文章我们就来分析下基于注解的IoC原理,在看文章之前我们可以带一些疑问,这样有助于我们更好的理解。

  1. @Bean是干什么用的?
  2. @Controller、@Service又是干啥的?
  3. @CompoentScan注解是怎么起作用的?
  4. Spring是怎么发现@Bean、@Controller、@Service这些注解修饰的类的?
  5. 发现之后是怎么注册到IOC容器中的?
  6. IOC容器到底是个啥?

三、源码分析

首先看下段代码:

AnnotationConfigApplicationContext aac =
				new AnnotationConfigApplicationContext("com.mydemo");

AnnotationConfigApplicationContext可以实现基于Java的配置类(包括各种注解)加载Spring的应用上下文。避免使用application.xml进行配置。相比XML配置,更加便捷。

3.1、类结构图

主要类或接口说明:

  • GenericApplicationContext——通用应用上下文,内部持有一个DefaultListableBeanFactory实例,这个类实现了BeanDefinitionRegistry接口,可以在它身上使用任意的bean definition读取器。典型的使用案例是:通过BeanFactoryRegistry接口注册bean definitions,然后调用refresh()方法来初始化那些带有应用上下文语义(org.springframework.context.ApplicationContextAware)的b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值