Dwa konstruktory z wstrzykiwaniem zależności

0

Czesc, mam taki problem, poniewaz raczej potrzebuje tutaj dwóch kosntruktorow. Jeden dotyczy czegos innego i drugi czegos innego. W Springu sie gryzie, mam błąd:

Invalid autowire-marked constructors

Jak podejsc do tematu i jak to rozwiazac bo juz dostaje goraczki:(

@Autowired
public PrescriptionFullService(SendDocumentModelDto prescriptionModel) {
    setPrescriptionModel(prescriptionModel);
}
@Autowired
public PrescriptionFullService(SendCancelationModelDto cancelationModel) {
    setCancelationModel(cancelationModel);
}

public void setPrescriptionModel(SendDocumentModelDto prescriptionModel) {
    this.NPWZ = String.valueOf(prescriptionModel.getNpwz());
    this.isPersonalContext = prescriptionModel.isPersonalContext();
    this.signedDocument = (prescriptionModel.getPrescriptions() != null)
            ? prescriptionModel.getPrescriptions().stream()
            .map(item -> Base64.getDecoder().decode(item))
            .collect(Collectors.toList()) : Collections.emptyList();
    setRetryPolicy();
}

public void setCancelationModel(SendCancelationModelDto cancelationModel) {
    this.NPWZ = String.valueOf(cancelationModel.getNpwz());
    this.isPersonalContext = cancelationModel.isPersonalContext();
    this.signedCancellationDocument = (cancelationModel.getPrescriptions() != null) ? cancelationModel.getPrescriptions().stream()
            .map(item -> new Triplet<>(item.getPrescriptionKey(), item.getCancelationId(), Base64.getDecoder().decode(item.getCancelationBody())))
            .collect(Collectors.toList()) : Collections.emptyList();
    setRetryPolicy();
}
1

Po pierwsze napisz w ogóle, co ten kod ma robić. Po drugie czemu chcesz wstrzykiwać dto przez konstruktor? Dto podaje się w argumencie metody

0

A dobra, wewnatrz metod wywołałem dtosy i po prostu wywolalem metodyw konstruktorze, moj boze

1

Primo: autowired nad konstruktorem nie jest potrzebny
Secundo: nie wszystko musi być beanem springowym żeby to wstrzykiwać (po co w ogóle dto ma być beanem jak to służy do przechowywania danych a beany springowe standardowo są singletonami?)
Tertio: zamiast pchać wszystko do kontekstu czy pakować jawne wstrzykiwanie w Twoje serwisy możesz stworzyć sobie klasę z odpowiednimi adnotacjami by mieć kontrolęnad tym co tworzysz:
https://docs.spring.io/spring-javaconfig/docs/1.0.0.m3/reference/html/creating-bean-definitions.html punkt 4.2.4.1

0

No tak faktycznie, autowired nie jest tutaj konieczne. Dzieki

1 użytkowników online, w tym zalogowanych: 0, gości: 1