导读

1、依赖注入的模式和类型
1.1、Setter 方法注入
实现方法
(1)手动模式
XML 资源配置元信息
<bean class="com.injection.UserHolder">
<property name="user" ref="user"></property>
</bean>
Java 注解配置元信息
API 配置元信息
(2)自动模式
#byName
<bean class="injection.UserHolder" autowire="byName"></bean>
#byType
<bean class="injection.UserHolder" autowire="byType"></bean>
1.2、构造器注入
实现方法
(1)手动模式
XML 资源配置元信息
<bean class="com.injection.UserHolder">
<constructor-arg name="user" ref="user"></constructor-arg>
</bean>
Java 注解配置元信息
API 配置元信息
(2)自动模式
#constructor
<bean class="inje.UserHolder" autowire="constructor"></bean>
1.3 、字段注入
实现方法
• 手动模式
Java 注解配置元信息 :@Autowired、 @Resource
1.4 、方法注入
实现方法
• 手动模式
Java 注解配置元信息: @Autowired 、@Resource 、@Bean
1.5 、接口回调注入
实现方法
• 自动模式
Aware 系列接口回调
| 内建接口 | 说明 |
|---|---|
| BeanFactoryAware | 获取 IoC 容器 - BeanFactory |
| ApplicationContextAware | 获取 Spring 应用上下文 - ApplicationContext 对象 |
| EnvironmentAware | 获取 Environment 对象 |
| ResourceLoaderAware | 获取资源加载器 对象 - ResourceLoader |
| BeanClassLoaderAware | 获取加载当前 Bean Class 的 ClassLoader |
| BeanNameAware | 获取当前 Bean 的名称 |
| ApplicationEventPublisherAware | 获取 ApplicationEventPublishAware 对象,用于 Spring 事件 |
| EmbeddedValueResolverAware | 获取 StringValueResolver 对象,用于占位符处理 |
2、依赖注入类型如何选择?
• 低依赖:构造器注入
• 多依赖:Setter 方法注入
• 便利性:字段注入
• 声明类:方法注入
3、限定注入
使用注解 @Qualifier 限定
• 通过 Bean 名称限定
• 通过分组限定
4、延迟依赖注入
使用 API ObjectFactory 延迟注入
• 单一类型
• 集合类型
使用 API ObjectProvider 延迟注入(推荐)
• 单一类型
• 集合类型
5、依赖注入处理过程
• 入口 - DefaultListableBeanFactory#resolveDependency
• 依赖描述符 - DependencyDescriptor
• 自定绑定候选对象处理器 - AutowireCandidateResolver
Spring依赖注入详解:构造器、setter、字段与方法注入
本文深入探讨了Spring框架中的依赖注入模式,包括setter方法注入、构造器注入、字段注入和方法注入。手动与自动模式的实现方式逐一解析,并讨论了如何选择合适的注入类型。此外,还介绍了限定注入、延迟依赖注入的策略以及依赖注入的处理过程。对于实际开发,选择正确的注入方式对于降低耦合性和提高代码可维护性至关重要。
1153

被折叠的 条评论
为什么被折叠?



