code: public ComponentDef createComponentDef(Class<?> componentClass) {
          if (!namingConvention.isTargetClassName(componentClass.getName(), nameSuffix)) {
              return null;
          }
          final Class<?> targetClass = namingConvention.toCompleteClass(componentClass);
          if (targetClass.isInterface()) {
              if (!isEnableInterface()) {
                  return null;
              }
          } else if (Modifier.isAbstract(targetClass.getModifiers())) {
              if (!isEnableAbstract()) {
                  return null;
              }
          }
          final AnnotationHandler handler = AnnotationHandlerFactory.getAnnotationHandler();
          final ComponentDef cd = handler.createComponentDef(targetClass, instanceDef, autoBindingDef, externalBinding);
          if (cd.getComponentName() == null) {
              cd.setComponentName(namingConvention.fromClassNameToComponentName(targetClass.getName()));
          }
          setupCompleteComponent(handler, cd);
          return cd;
      }
docs: =============