Spring IoC 注入(2)

本文详细探讨了Spring IoC的注入方式,包括基础类型、集合类型和限定注入的使用,以及@Autowired和@Inject注解的工作原理。同时,还介绍了自定义依赖注入注解的实现方法和Java通用注解的注入原理。

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

基础类型注入

基础类型:
• 原生类型(Primitive):boolean、byte、char、short、int、float、long、double
• 标量类型(Scalar):Number、Character、Boolean、Enum、Locale、Charset、Currency、
Properties、UUID
• 常规类型(General):Object、String、TimeZone、Calendar、Optional 等
• Spring 类型:Resource、InputSource、Formatter 等

集合类型注入

集合类型
• 数组类型(Array):原生类型、标量类型、常规类型、Spring 类型
• 集合类型(Collection)
• Collection:List、Set(SortedSet、NavigableSet、EnumSet)
• Map:Properties

限定注入

• 使用注解 @Qualifier 限定
• 通过 Bean 名称限定
• 通过分组限定
• 基于注解 @Qualifier 扩展限定
• 自定义注解 - 如 Spring Cloud @LoadBalanced

依赖处理过程

• 使用注解 @Qualifier 限定
• 通过 Bean 名称限定
• 通过分组限定
• 基于注解 @Qualifier 扩展限定
• 自定义注解 - 如 Spring Cloud @LoadBalanced

@Autowired 注入原理

• 使用 API ObjectFactory 延迟注入
• 单一类型
• 集合类型
• 使用 API ObjectProvider 延迟注入(推荐)
• 单一类型
• 集合类型

依赖处理过程

基础知识
• 入口 - DefaultListableBeanFactory#resolveDependency
• 依赖描述符 - DependencyDescriptor
• 自定绑定候选对象处理器 - AutowireCandidateResolver

@Autowired 注入

• @Autowired 注入规则
• 非静态字段
• 非静态方法
• 构造器
• @Autowired 注入过程
• 元信息解析
• 依赖查找
• 依赖注入(字段、方法)

@Inject 注入

@Inject 注入过程
• 如果 JSR-330 存在于 ClassPath 中,复用 AutowiredAnnotationBeanPostProcessor 实现

Java通用注解注入原理

• CommonAnnotationBeanPostProcessor
• 注入注解
• javax.xml.ws.WebServiceRef
• javax.ejb.EJB
• javax.annotation.Resource
• 生命周期注解
• javax.annotation.PostConstruct
• javax.annotation.PreDestroy

自定义依赖注入注解

• 基于 AutowiredAnnotationBeanPostProcessor 实现
• 自定义实现
• 生命周期处理
• InstantiationAwareBeanPostProcessor
• MergedBeanDefinitionPostProcessor
• 元数据
• InjectedElement
• InjectionMetadata

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值