Ist es möglich mit @Resource für einen Konstruktor?
Ich Frage mich, ob es möglich, die @Resource
annotation auf einen Konstruktor.
Mein Anwendungsfall ist, dass ich will wire ein final-Feld namens bar
.
public class Foo implements FooBar {
private final Bar bar;
@javax.annotation.Resource(name="myname")
public Foo(Bar bar) {
this.bar = bar;
}
}
Bekomme ich eine Meldung, dass die @Resource
ist nicht zulässig an dieser Stelle. Gibt es eine andere Möglichkeit konnte ich den Draht das Letzte Feld?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Quelle der
@Resource
:Diese Zeile:
bedeutet, dass diese annotation kann nur auf Klassen, Felder und Methoden.
CONSTRUCTOR
fehlt.Verwenden
@Autowired
oder@Inject
. Diese Einschränkung ist in der Spring reference Dokumentation: Fine-tuning annotation-basierte autowiring mit Qualifikation:Ergänzen Robert Munteanu Antwort und für zukünftige Referenz, hier ist, wie die Verwendung von
@Autowired
und@Qualifier
auf der Konstruktor sieht :In diesem Beispiel
bar
ist nur autowired (d.h. es gibt nur eine bean der Klasse im Zusammenhang damit Spring weiß, was zu verwenden), währendbaz
hat einen qualifier zu erzählen, die Feder, die insbesondere die bean der Klasse wir wollen injiziert.