Spring自动装配时忽略给定的依赖接口 ignoreDependencyType 与 ignoreDependencyInterface

本文介绍如何使用Spring的ignoreDependencyType和ignoreDependencyInterface方法来避免特定类型的依赖被自动装配。通过示例展示了这两种方法如何使Spring在自动装配过程中忽略指定的依赖。

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

Spring自动装配时忽略给定的依赖接口 ignoreDependencyType 与 ignoreDependencyInterface

一、基本类建立

一共5个类
A.java
B.java

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、调试

1.debug看MyUserTest类中属性注入情况(此时未用到MyPostProcess类)

在这里插入图片描述
释:可以看到A类中的B类也有实例(举例来说,当 A 中有属性 B ,那么 当 Spring 在获取 A 的 Bean 的时候如果其属性 B 还没有
初始化,那么 Spring 会自动初始化 B ,这也是 Spring提供的一个重要特性(自动装配)。但是,某些情况下, B 不会被初始化,下面来看看什么情况B不会被实例化)

2.通过ignoreDependencyType使B类不被实例化

在AComponent类中加入MyPostProcess类
在这里插入图片描述
MyPostProcess类实现了BeanFactoryPostProcessor接口
在这里插入图片描述
debug看MyUserTest类中属性注入情况,发现A中的B属性是null
在这里插入图片描述

3.通过ignoreDependencyInterface使B类不被实例化

修改MyPostProcess类如下图:
在这里插入图片描述
debug看MyUserTest类中属性注入情况,发现A中的B属性是null
在这里插入图片描述

三、分析

1. ignoreDependencyInterface和ignoreDependencyType方法是如何让A中的B属性不被注入的。

看beanFactory.ignoreDependencyInterface(A.class)方法跟进去如下图
在这里插入图片描述
ignoreDependencyInterface和ignoreDependencyType是两个set集合
在这里插入图片描述
整个类只有isExcludedFromDependencyCheck方法用到了这两个集合,isExcludedFromDependencyCheck方法的意思是判断给定的bean属性在依赖检测中要被排除,假如该方法返回true,也就是在依赖检测中这个bean的属性要被排除,在自动装配时就会被忽略。

在这里插入图片描述

总结

1.

@Bean(autowire=Autowire.BY_TYPE)可以根据类型注入实例
在这里插入图片描述

2.

ignoreDependencyInterface和ignoreDependencyType使bean不初始化

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_当i已成往事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值