code: public void register(Class<?> type, String name, Object... args) {
      Assert.notNull(name, "class'name is null");
      if (0 == args.length) {
        nameTypes.put(name, type);
      } else {
        // 注册bean的name和别名
        BeanDefinition bd = (BeanDefinition) args[0];
        definitionRegistry.registerBeanDefinition(name, bd);
        // for list(a.class,b.class) binding usage
        String alias = bd.getBeanClassName();
        if (bd.isSingleton() && !name.equals(alias) && !definitionRegistry.isBeanNameInUse(alias)) {
          definitionRegistry.registerAlias(name, alias);
        }
        if (null == type) {
          if (!bd.isAbstract()) throw new RuntimeException("Concrete bean should has class.");
        } else nameTypes.put(name, type);
      }
    }
docs: <p>
  register.
  </p>
  
  @param type a {@link java.lang.Class} object.
  @param name a {@link java.lang.String} object.
  @param args a {@link java.lang.Object} object.