Wstrzykiwanie zależności w Springu.

Wstrzykiwanie zależności w Springu.
BA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 259
0

Cześć, mam taki problem posiadam interfejsMessageService z jedną metodą sendMessage(title,message). Następnie mam dwie klasy, które implementują ten interfejs są to odpowiednio Sms i Email. Mam też kolejną klasę Person, w której korzystam z auto wiązania i wstrzykuję implementację MessageService, robię to tak:

Kopiuj
    @Autowired
    public Person(@Qualifier("sms") MessageService messageService) {
        this.messageService = messageService;
    }

Teraz moje pytanie jest takie czy jest jakaś inna możliwość powiązania MessageService? Tak bym mógł np. otrzymać obiekty typu Person jeden z implementacją Sms, a drugi z Email.

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
1

@ Autowited wiąże po typie i dostaje bzika jak jest kilka implementacji, a @Qualifer po nazwie więc właśnie tak to zrobiłeś. Zanim zaczniesz programować w Springu lepiej poczytaj najpierw dokumentacje. A nie wspomne o tym że pomysł wstrzykiwania obiektu z logiką to modelu jest absurdalny tak samo jak robienie z prostego modelu DTO czy z entity beana :D

BA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 259
0

Uwielbiam odpowiedzi nie na temat. To był tylko przykład do zademonstrowania. Moje pytanie dalej jest aktualne. Czy istnieje możliwość utworzenia dwóch obiektów Person z różnymi implementacjami MessageService? Załóżmy jedną osoba będzie chciała wysyłać wiadomości przez smsy, a druga przez email. Jak osiągnąć taki efekt. Najlepiej pozbył bym się Qualifier i podczas pobierania beana zdecydował z jakiej implementacji powinien on skorzystać.

airborn
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 274
1

Możesz wstrzyknąć Map<String, MessageService>. Kluczem w takiej mapie będzie nazwa beana (taka sama jak obecnie używana w @Qualifier) i potem wybrać konkretną implementację z mapy, tylko jakiś default ustawić jak użytkownik ma dziwne dane zapisane w profilu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.