Spring 层次性依赖查找Bean

层次性依赖查找接口 - HierarchicalBeanFactory
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| public class DemoApplication { public static void main(String[] args) { AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext(); ac.register(Config1.class); ac.refresh(); ConfigurableListableBeanFactory beanFactory = ac.getBeanFactory(); System.out.println("父容器"+beanFactory.getParentBeanFactory()); HierarchicalBeanFactory parentBeanFactory = createBeanFactory(); displayBean(beanFactory,"test"); displayBean(parentBeanFactory,"superTest"); beanFactory.setParentBeanFactory(parentBeanFactory); displayBean(beanFactory,"superTest"); displayBean(parentBeanFactory,"test"); displayContainsBean(beanFactory,"superTest"); displayContainsBean(parentBeanFactory,"superTest"); ac.close(); } private static void displayBean(HierarchicalBeanFactory beanFactory,String beanName){ System.out.println(beanFactory.containsLocalBean(beanName)); } private static void displayContainsBean(HierarchicalBeanFactory beanFactory,String beanName){ System.out.println(containsBean(beanFactory,beanName)); } private static boolean containsBean(HierarchicalBeanFactory beanFactory,String beanName){ BeanFactory parentBeanFactory = beanFactory.getParentBeanFactory(); if(parentBeanFactory instanceof HierarchicalBeanFactory){ HierarchicalBeanFactory hierarchicalBeanFactory = HierarchicalBeanFactory.class.cast(parentBeanFactory); if(containsBean(hierarchicalBeanFactory,beanName)){ return true; } } return beanFactory.containsLocalBean(beanName); } private static HierarchicalBeanFactory createBeanFactory(){ AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext(); ac.register(Config.class); ac.refresh(); return ac.getBeanFactory(); } }
|
来源
https://rumenz.com/rumenbiji/Spring-HierarchicalBean.html