Bean的依赖检查

Bean的依赖检查

应用复杂——> IOC管理的Bean非常多——>依赖关系复杂——>一般情况下是在应用第一次向容器索取Bean的时候发生[这个过程不能保证注入一定能成功]——>如果需要重新检查这些依赖关系的有效性,会是一件很繁琐的事情——>Spring设计了一个依赖检查特性,通过它可以帮助应用检查是否所有的属性都已经被正确设置。——>在Bean定义中设置dependency-check属性来滴定依赖检查模式(none、simple、object、all四种模式),默认是none,具体的实现在AbstractAutowireCapableBeanFactory中的populateBean方法中的checkDependencies方法。会对Bean的Dependencies属性进行检查,如果发现不满足要求,就会抛出异常通知应用。

protected void checkDependencies(
		String beanName, AbstractBeanDefinition mbd, PropertyDescriptor[] pds, @Nullable PropertyValues pvs)
		throws UnsatisfiedDependencyException {

	int dependencyCheck = mbd.getDependencyCheck();
	for (PropertyDescriptor pd : pds) {
		if (pd.getWriteMethod() != null && (pvs == null || !pvs.contains(pd.getName()))) {
			boolean isSimple = BeanUtils.isSimpleProperty(pd.getPropertyType());
			boolean unsatisfied = (dependencyCheck == AbstractBeanDefinition.DEPENDENCY_CHECK_ALL) ||
					(isSimple && dependencyCheck == AbstractBeanDefinition.DEPENDENCY_CHECK_SIMPLE) ||
					(!isSimple && dependencyCheck == AbstractBeanDefinition.DEPENDENCY_CHECK_OBJECTS);
			if (unsatisfied) {
				throw new UnsatisfiedDependencyException(mbd.getResourceDescription(), beanName, pd.getName(),
						"Set this property value or disable dependency checking for this bean.");
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值