Stack Overflow em Português Asked by Daniela Morais on September 26, 2021
Ao trabalhar com Spring percebo dois padrões de utilizar o @Autowired, declarar dentro do construtor e fora.
Construtor
@Service
public class myService {
private final PartnerRepository partnerRepository;
private final RequestorRepository requestorRepository;
@Autowired
public myService(PartnerRepository partnerRepository, RequestorRepository requestorRepository) {
this.partnerRepository = partnerRepository;
this.requestorRepository = requestorRepository;
}
Sem construtor
@Service
public class myService {
@Autowired
PartnerRepository partnerRepository;
@Autowired
RequestorRepository requestorRepository;
//methods
}
Qual a utilidade de cada um dos casos e por quê preferir um ao invés do outro? Pessoalmente sempre utilizei fora do construtor apenas parecer mais elegante.
A única implicação direta que percebi foi para testes unitários com Mockito e JUnit, ao utilizar fora do construtor é necessário utilizar @Spy (resposta no SOen) e ao utilizar no construtor é possível fazer uma instanciação direta com o new.
MyService myService = Mockito.spy(new MyService(partnerRepository, requestorRepository));
Todas as formas servem para o mesmo objetivo, e se obtém o mesmo resultado final. A vantagem de ser no construtor é:
Usar um ou outro fica na sua escolha.
Answered by Humberto Machado on September 26, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP