Frühling @autowire mit ErbschaftJava

Java-Forum
Anonymous
 Frühling @autowire mit Erbschaft

Post by Anonymous »

Ich bin neu im Frühling und wollte Ihre Allhilfe. Ich bin auf die "erwartete Single -Match -Bean haben ich zwei" -Ausnahmen gefunden. Ich habe nach der Lösung gesucht und denke, ich habe die Lösung verstanden. Die meisten Lösungen schlagen vor, @Qualifier zu verwenden, um diese Ausnahme zu beheben. Ich glaube jedoch nicht, dass es mein Problem lösen wird. Unten ist meine Klassenhierarchie: < /p>

Code: Select all

abstract class A{

@Autowired
Client client;

protected void doSomething(){
/* ....some code .... */
client.someStuff();
/* ....some code .... */
}

/* ..... few abstract methods ......... */
}

class B extends A{
public void action(){ doSomething() }
}

class C extends A{
public void action(){ doSomething() }
}
< /code>

My .xml Confirugration -Datei ist < /p>

    














< /code>

Ich habe also im Grunde eine abstrakte Klasse, die eine Methode hat, die bei beiden Unterklassen gemeinsam ist. Diese Methode verwendet die Client -Referenz, wird jedoch zur Laufzeit ein anderes Objekt verwendet. dosomething () < /code> wird in den Unterklassen nicht überschrieben. Ich glaube nicht, dass ich @Qualifier verwenden kann, da @Qualifier den Bean -Namen von .xml als Parameter angeben muss, aber da das Attribut "Client" häufig ist, kann ich nicht nur einen Bean -Namen verwenden. < /p>

Kann jemand bitte helfen, zu erklären, ob es eine Möglichkeit gibt, sich fortzubewegen? Das Duplizieren des Dosens () 
Methode besiegt den gesamten Vererbungszweck und verursacht einen doppelten Code über Klassen hinweg. Ich kann das Client -attribut in den Unterklassen nicht haben, da es Dosen () zur Kompilierungszeit unbekannt wird.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post