Spring ignoreDependencyInterface功能

ignoreDependencyInterface的主要功能是忽略给定接口实现类中,对实现接口通过set注入的实例类型,会忽略自动装配,也就是当有忽略的接口类,自动装配会忽略接口方法注入的实例类的自动装配,因为自动装配会覆盖我们实现接口类的方法注入结果

调用ignoreDependencyInterface方法,会把对应类放入

AbstractAutowireCapableBeanFactory中的
private final Set<Class<?>> ignoredDependencyInterfaces集合中,

在populateBean中每次属性注入会调用方法:

protected boolean isExcludedFromDependencyCheck(PropertyDescriptor pd) {
    return AutowireUtils.isExcludedFromDependencyCheck(pd) || this.ignoredDependencyTypes.contains(pd.getPropertyType()) || AutowireUtils.isSetterDefinedInInterface(pd, this.ignoredDependencyInterfaces);
}

该方法就是判断注入的属性是否有ignoreDependencyInterface,有的话调用下面方法,忽略属性:

protected PropertyDescriptor[] filterPropertyDescriptorsForDependencyCheck(BeanWrapper bw) {
    List<PropertyDescriptor> pds = new ArrayList(Arrays.asList(bw.getPropertyDescriptors()));
    pds.removeIf(this::isExcludedFromDependencyCheck);
    return (PropertyDescriptor[])pds.toArray(new PropertyDescriptor[0]);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值