// Register all interfaces for this class
this.registerInterfaces(componentClass);
// Resolve injected Components
for (ComponentAccessor accessor : getAllComponentAccessors(component)) {
// Another annotated component
In inAnnotation = accessor.getAnnotation(In.class);
if (inAnnotation != null) {
Object fieldVal = null;
String compName = accessor.getComponentName();
Class<?> compType = accessor.getComponentType();
Class<?> implType = getImplClass(compType);
// TODO stateless components should not / need not be cached
// autowire the component if not done yet
if (!namedComponents.containsKey(compName)) {
boolean required = inAnnotation.required();
boolean autoCreate = implType.isAnnotationPresent(AutoCreate.class);
Scope scopeAnn = implType.getAnnotation(Scope.class);
boolean stateless = false;
if (scopeAnn != null) {
stateless = scopeAnn.value() == ScopeType.STATELESS;
}
boolean mayCreate = inAnnotation.create() || autoCreate || stateless;
if (required && !mayCreate) {
String msg = "Not allowed to create required component "+compName+" with impl "+implType+". Try @AutoCreate or @In(create=true).";
if (ignoreNonResolvable) {
log.warn(msg);
} else {