Spring: Injektion von Mehrdeutigkeiten

Diskutiere Spring: Injektion von Mehrdeutigkeiten im Application Tier Forum; Moin, ich suche ein Möglichkeit in Spring das gleiche zu machen was in in CDI mit: @Inject Instance<MyInterface> instances; machen...

  1. JonnyRico
    JonnyRico Neues Mitglied
    Moin,

    ich suche ein Möglichkeit in Spring das gleiche zu machen was in in CDI mit:

    Code (Java):

    @Inject
    Instance<MyInterface> instances;
     
    machen kann. Ich möchte also in meiner Spring-Config die Injektion eines Interfaces definieren und dann alle Objekte instanziiert bekommen, die dieses Interface implementieren. Um das Auflösen der Mehrdeutigkeit möchte ich mich also selbst kümmern bzw. ich brauche eigentlich alle Objekte.
    Was ich allerdings noch besser finden würde wäre die Angabe des Interfaces + Annotation also die Entsprechung zu


    Code (Java):

    @Inject
    @OnlyBeansWithThisAnnotation
    Instance<MyInterface> instances;
     
    Kann mir jemand sagen wie und ob ich dies in Spring (Version ist mir egal) realisieren kann?

    Gruß

    Sascha

    P.s. Konfigurieren möchte ich das ganze am liebsten in der Old-School XML-Config ;)
     
  2. Vielleicht helfen dir diese Grundlagen hier weiter: (hier klicken)
  3. Noctarius
    Noctarius Neues Mitglied
  4. JonnyRico
    JonnyRico Neues Mitglied
    Hi,

    nein das ich eigentlich nicht das was ich suche. Wenn ich zwei Klassen habe die das Interface MyInterface implementieren und ich in einer anderen Klasse einen Setter der Art
    Code (Java):
    @AutoWired public void setMyObject(MyInterface value){...}
    habe und ich in Spring dann auto-wire="ByType" einstelle, dann erhalte ich eine Exception, dass die Injection nicht ausgeführt werden kann, da eine Mehrdeutigkeit vorliegt. Er kann ja auch nicht wissen welches Objekt er injizieren soll. Bei meinem CDI-Beispiel muss der Container das auch gar nicht, denn er injected mir einfach beide in den Instance-Wrapper über den ich dann iterieren kann. So komme ich an alle Instanzen heran. Das würde ich auch gerne in Spring können nur leider weiß ich nicht wie.

    Gruß

    Sascha
     
  5. Noctarius
    Noctarius Neues Mitglied
    [c]@Qualifier("beanname")[/c] - Das?
     
  6. mvitz
    mvitz Aktives Mitglied
    Code (Java):
    @Autowired
    private List<MyInterface> instances;
    oder auch
    Code (Java):
    @Inject
    private List<MyInterface> instances;
     
  7. JonnyRico
    JonnyRico Neues Mitglied
    Krass das funzt? Das werde ich morgen gleich mal testen. Bekomme ich das auch komplett ohne Annotation hin. Also ausschließlich mit XML-Config?
     
  8. Noctarius
    Noctarius Neues Mitglied
  9. JonnyRico
    JonnyRico Neues Mitglied
    ????
     
  10. JonnyRico
    JonnyRico Neues Mitglied
    Super danke das ist es. Ich hatte nicht erwartet das es auf die triviale Art funktioniert ;) Da zeigt sich mal wieder "Do the simplest thing that could possibly work" :)

    Danke
     
  11. mvitz
    mvitz Aktives Mitglied
  12. Hast du dir unsere Java-Grundlagen hier schon gesichert? *Klick*
Die Seite wird geladen...

Spring: Injektion von Mehrdeutigkeiten - Ähnliche Themen

HILFE Dringend switch case springt nicht raus
HILFE Dringend switch case springt nicht raus im Forum Java Basics - Anfänger-Themen
OAuth2 mit Spring boot und Java
OAuth2 mit Spring boot und Java im Forum Netzwerkprogrammierung
Günstigste oder kostenlose Variante SpringBoot Application laufen zu lassen
Günstigste oder kostenlose Variante SpringBoot Application laufen zu lassen im Forum Server einrichten und konfigurieren
Spring Boot Models auslagern
Spring Boot Models auslagern im Forum Netzwerkprogrammierung
Jump & Run: Beim springen bewegen(rechts,links)
Jump & Run: Beim springen bewegen(rechts,links) im Forum Java Basics - Anfänger-Themen
Thema: Spring: Injektion von Mehrdeutigkeiten