Spring: Injektion von Mehrdeutigkeiten

Dieses Thema Spring: Injektion von Mehrdeutigkeiten im Forum "Application Tier" wurde erstellt von JonnyRico, 22. März 2012.

Thema: Spring: Injektion von Mehrdeutigkeiten Moin, ich suche ein Möglichkeit in Spring das gleiche zu machen was in in CDI mit: @Inject...

  1. 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 Java-Grundlagen weiter --> *Klick*
  3. 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
     
  4. [c]@Qualifier("beanname")[/c] - Das?
     
  5. Code (Java):
    @Autowired
    private List<MyInterface> instances;
    oder auch
    Code (Java):
    @Inject
    private List<MyInterface> instances;
     
  6. Krass das funzt? Das werde ich morgen gleich mal testen. Bekomme ich das auch komplett ohne Annotation hin. Also ausschließlich mit XML-Config?
     
  7. Was? Oo
     
  8. ????
     
  9. 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
     
  10. KOSTENLOSES Java-Grundlagen Training im Wert von 39 € Sichere dir hier den kostenlosen Zugriff auf umfangreiches Java-Know How und starte richtig durch!