É possível introduzir dependências não apenas através do construtor?
sobes.tech IA
Resposta da IA
Sim, é possível. Além da injeção de dependências através do construtor (injeção de dependências baseada em construtor), existem as seguintes principais formas no Spring Framework:
-
Injeção através de setter (injeção de dependências baseada em setter): As dependências são injetadas através de métodos setter públicos.
public class MyClass { private Dependency dependency; public void setDependency(Dependency dependency) { this.dependency = dependency; } // ... outros métodos } -
Injeção através do campo (injeção de dependências baseada em campo): As dependências são injetadas diretamente nos campos da classe usando anotações (por exemplo,
@Autowired). Este método é o mais comum, mas tem suas desvantagens (por exemplo, dificuldade em testes unitários e dependência oculta).public class MyClass { @Autowired private Dependency dependency; // ... outros métodos } -
Injeção através de métodos (injeção de dependências baseada em método): Método menos comum, onde as dependências são injetadas através de qualquer método anotado com a anotação correspondente (
@Autowired).public class MyClass { private Dependency dependency; @Autowired public void configure(Dependency dependency) { this.dependency = dependency; } // ... outros métodos }
A escolha do método depende da situação concreta e das preferências. A injeção via construtor é geralmente considerada preferível, pois garante que o objeto seja criado com todas as dependências necessárias e facilita os testes. No entanto, a injeção através de campos ou setters pode ser mais conveniente para dependências opcionais ou ao trabalhar com código legado.