Spring autowired na metodę

Spring autowired na metodę
teez
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:122
0
Kopiuj
package soundsystem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class CDPlayer {
    private CompactDisc cd;
    
    @Autowired
    public CDPlayer(CompactDisc cd) {
        this.cd = cd;
    }
    public void play() {
        cd.play();
    }
}

Jaki sens ma użycie tego @Autowired w metodzie? Przecież i tak przy tworzeniu obiektu tej klasy muszę w argumencie podać obiekt CompactDisc?

Kopiuj
    @Autowired
    private CompactDisc cd;
/*.
.
.
.
*/

        CDPlayer use = new CDPlayer(cd);

        use.play();
edytowany 1x, ostatnio: teez
ZA
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 5 lat
  • Postów:174
1

No nie ma. Autowired używaj na konstruktorze - wtedy to Spring tworzy instancje klasy z beanami które znajdzie w kontekście. Autowired przez metodę stosuj wtedy kiedy parametr jest opcjonalny do działania klasy (np gdy klasa ma sprecyzowana domyślne zachowanie a ty chcesz je opcjonalnie nadpisać gdy istnieje bean) i wtedy dawaj required = false

Kopiuj
@Autowired(required = false)
public void setDisplay(Display display) {}
Shalom
Przeczytałeś ze zrozumieniem o co autor pyta?
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

@teez a po co w takmi razie w ogóle ci tam @Component skoro tworzysz ten obiekt ręcznie? Inject/Autowired jest zwiazany z obiektami zarządzanymi przez kontener a nie takimi które tworzysz sobie ręcznie. Gdyby ten twój obiekt był tworzony przez Springa to automatycznie wrzuciłby mu tą zależność.
Niemniej akurat nie ma to specjalnie sensu dla klas które pokazałeś.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
teez
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:122
0

Gra. ;)

edytowany 1x, ostatnio: teez
Autowired
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:3
3

Niech to szlag. Jak zwykle spóźniony gdy wołają.

teez
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:122
0

Hahahahah, byłem pewny, że to jest jakieś oznaczenie do formatowania postu (tagowanie, cokolwiek). :D

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.