2. Spring依赖查找

899 阅读1分钟

根据Bean名称查找

初始化

BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath:/META-INF/dependency-lookup-context.xml");
  • 实时查找

    private static void lookupInRealTime(BeanFactory beanFactory) {
            User user = (User) beanFactory.getBean("user");
            System.out.println("实时查找:" + user);
        }
    
  • 延迟查找

    private static void lookupInLazy(BeanFactory beanFactory) {
        ObjectFactory<User> objectFactory = (ObjectFactory<User>) beanFactory.getBean("objectFactory");
        User user = objectFactory.getObject();
        System.out.println("延迟查找:" + user);
    }
    

根据Bean类型查找

  • 单个Bean对象

     private static void lookupByType(BeanFactory beanFactory) {
            User user = beanFactory.getBean(User.class);
            System.out.println("实时查找:" + user);
        }
    
  • 集合Bean对象

       private static void lookupCollectionByType(BeanFactory beanFactory) {
            if (beanFactory instanceof ListableBeanFactory) {
                ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory;
                Map<String, User> users = listableBeanFactory.getBeansOfType(User.class);
                System.out.println("查找到的所有的 User 集合对象:" + users);
            }
        }
    

根据Bean名称+类型查找

根据Java注解查找

  • 单个Bean对象

    private static void lookupByAnnotationType(BeanFactory beanFactory) {
      if (beanFactory instanceof ListableBeanFactory) {
        ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory;
        Map<String, User> users = (Map) listableBeanFactory.getBeansWithAnnotation(Super.class);
        System.out.println("查找标注 @Super 所有的 User 集合对象:" + users);
      }
    }
    
  • 集合Bean对象