Ich möchte @AutoWired verwenden, um eine nicht verwaltete Bean, die mit @Component konfiguriert wurde, in eine verwaltete Bean zu injizieren. Ich bin mir ziemlich sicher, dass ich die Konfiguration verfügen, aber aus irgendeinem Grund, warum ich immer die Ausnahme bekommen:Autowiring Unmanaged Beans mit @ Komponent
No unique bean of type [foo.Baz] is defined: Unsatisfied dependency of type [class foo.Baz]: expected at least 1 matching bean
Basierend auf dem Fehler, vermute ich es nicht in der Lage ist, die Baz Klasse zu finden, aber ich bin nicht sicher warum. Es ist mein Verständnis, dass das context: spring-konfigurierte Element in der XML-Konfiguration mir erlauben sollte, dies zu tun. Ich habe auch darauf geachtet, die entsprechenden JAR-Dateien (spring-weaving.jar und aspectjweaver.jar) einzubeziehen.
Hier ist ein einfaches Beispiel meiner Einrichtung.
Meine XML config:
<beans ...>
...
<context:annotation-config/>
<context:spring-configured/>
<context:component-scan base-package="foo"/>
<bean id="bar" class="foo.Bar"/>
...
</beans>
Ich habe eine Managed Bean:
package foo;
public class Bar {
@Autowired
private Baz baz;
public void setBaz(Baz baz) {
this.baz = baz;
}
...
}
Und eine nicht verwaltete Bean:
package foo;
@Component
public class Baz {
...
}
Gibt es etwas, was ich bin fehlt?
BEARBEITEN: Das Protokoll listet die Bohnen instanziierenden, und foo.Baz ist nicht einer von ihnen. Ich weiß nicht, warum die annotierte Klasse @Component nicht abgerufen wird.
Was sagt das Logging? Erwähnt es, dass es Bohnen im Foo-Paket automatisch erkennt? Die Debugprotokollierung sollte angeben, welche @Component-Beans gefunden wurden. – skaffman
Übrigens ist das aspectj/weben/Frühjahr-konfigurierte Zeug nicht notwendig für das, was Sie tun möchten. Dies ist nur einfaches Autowiren. – skaffman