Já conhecemos algumas formas de injetar objetos numa classe, dentro de um projeto Spring, como anotar com @Autowired um atributo da classe ou um construtor.
Porém, recentemente, aprendi mais 2 formas interessantes que eliminam parte do código fonte, que vou mostrar a seguir, ambas usando Lombok.
1ª forma: @AllArgsConstructor
O Lombok possui a annotation AllArgsConstructor
que cria um construtor com todos os atributos da classe. Porém, usando o atributo da annotation onConstructor
, permite você especificar qual annotation deve ser incluída no construtor gerado:
@RestController @AllArgsConstructor(onConstructor = @__(@Autowired)) public class UserController { private UserService userService; private Profession professionService; /* * Ao invés de usar assim: * * @Autowired * private UserService userService; * * @Autowired * private Profession professionService; * */ }
2ª forma: @RequiredArgsConstructor
Basta anotar a classe com a annotation @RequiredArgsConstructor
, que cria um construtor com todos os atributos final da classe. Assim, o Spring injeta pra gente as dependências obrigatórias.
@RestController @RequiredArgsConstructor public class UserController { private final UserService userService; private final Profession professionService; /* * Ao invés de usar assim: * * @Autowired * private UserService userService; * * @Autowired * private Profession professionService; * */ }
Lembrete!
Criar construtores em classes abstratas te obriga a criar construtores nas classes filhas chamando o construtor da classe mãe.
Top comments (0)