L05_spring依赖注入

导读

在这里插入图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值