Spring 经典代码收集

2020-11-21  本文已影响0人  码而优则仕

检查我指定依赖的 Bean 是否有指定依赖于我的Bean

//beanName 当前Bean,dependentBeanName 当前Bean 指定依赖的Bean,alreadySeen 已经检查过没有依赖循环的BeanName集合
private boolean isDependent(String beanName, String dependentBeanName, @Nullable Set<String> alreadySeen) {
        if (alreadySeen != null && alreadySeen.contains(beanName)) {
            return false;
        }
        String canonicalName = canonicalName(beanName);
        Set<String> dependentBeans = this.dependentBeanMap.get(canonicalName);
        if (dependentBeans == null) {
            return false;
        }
        if (dependentBeans.contains(dependentBeanName)) {
            return true;
        }
        for (String transitiveDependency : dependentBeans) {
            if (alreadySeen == null) {
                alreadySeen = new HashSet<>();
            }
            alreadySeen.add(beanName);
            if (isDependent(transitiveDependency, dependentBeanName, alreadySeen)) {
                return true;
            }
        }
        return false;
    }```
上一篇 下一篇

猜你喜欢

热点阅读