konnte nicht injizieren, um die Basisklasse direktUnable Basisklasse mit @Inject Anmerkung
Basis abstrakte Klasse
@Component
public abstract class A{
}
Here are my derived classes
@Named("abc")
public class B extends A{
}
@Named("cde")
public class C extends A{
}
Ich versuche A zu injizieren in meiner Ressourcenklasse aufzurufen, aber die folgenden Fehler bekommen.
@Inject
private A a
@Component
public class Resource implements ServiceImpl{
@Inject
public Resource(final Client client,
final A a) {
Assert.notNull(client);
Assert.notNull(a);
this.client = client;
this.a= a;
}
@Override
public Response method1(final Request request) {
Response response = null;
try {
response = (PaymentResponse) this.a.process(request);
}
catch (final Exception ex) {
ex.printstackTrace();
}
return response;
}
}
@Override
public Response method2(final Request request) {
Response response = null;
try {
response = this.a.process(request);
}
catch (final Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return response;
}
}
Fehler bei der Inbetriebnahme der Anwendung:
org.springframework.beans.factory.UnsatisfiedDependencyException: Fehler Bohne Erstellung mit dem Namen 'Resource' definiert in der Datei Keine Warte Bean vom Typ 'a' ist definiert: erwartete einzelne übereinstimmende Bean aber gefunden 2: b, c
Gibt es eine Alternative zu diesem Weg. Weil ich versuche, die gleiche Basisklasse auf 30 verschiedene Klassen zu erweitern. Also um die gleiche Injektion 30 Mal zu vermeiden? . Gibt es auch eine Möglichkeit, den Qualifier auf Methodenebene zu verwenden? – dev21
Wenn es keine Komponenten sein müssen, können Sie eine Fabrikkomponente erstellen und in andere Komponenten injizieren. Die Factory könnte ein erwartetes Objekt erstellen, das von Ihrer Basisklasse stammt. Ich bin mir nicht sicher, was Sie erreichen wollen, aber das Erstellen von 30 Klassen kann ein Zeichen für schlechtes Design sein und Sie möchten vielleicht Ihre Lösung überdenken. Wenn ich geholfen habe, akzeptiere bitte meine Antwort. –