use @autowired na classe base abstrata
Como eu sei,field injection
não é recomendado. Deveria usarconstructor
em vez de.
O que estou tentando fazer aqui é usar@Autowired
no construtor da classe base e torne-o acessível para todas as subclasses. Em algumas subclasses, também preciso que alguns beans específicos sejam@Autowired
de seus construtores. O código de demonstração é o seguinte:
Classe base:
public abstract class Base {
protected final MyDemoService myDemoService;
@Autowired
public Base(MyDemoService myDemoService) {
this.myDemoService = myDemoService;
}
}
Classe (sub) herdada:
public class Sub extends Base {
private final MySubService mySubService;
@Autowired
public Sub(MySubService mySubService) {
this.mySubService = mySubService;
}
}
Isso me dará um erro 'sem construtor padrão'.
É semelhante à pergunta:pergunta e resposta semelhantes, mas não funciona aqui.
Mergulhei nisso por um tempo, encontrei este artigo sobredependency injection
: leia mais
Eu estou pensando é oSetter Injection
um caminho certo para a minha pergunta?
Injeção de incubadora:
public abstract class Base {
protected MyDemoService myDemoService;
@Autowired
public void setMyDemoService(MyDemoService myDemoService) {
this.myDemoService = myDemoService;
}
}
Eu sou novo no Java Spring Boot e quero obter alguns conselhos de especialistas de vocês. Qualquer discussão será muito apreciada!