Spring não só cria objetos. Ele conecta a aplicação
Muita gente entende Spring só até a metade.
Parece que ele apenas tira alguns new do código e deixa a aplicação mais organizada.
Isso é verdade, mas ainda está incompleto.
O ponto mais importante vem logo depois: o Spring não só cria os objetos. Ele também conecta esses objetos automaticamente.
É aí que entra Dependency Injection, ou DI.
O que muda na prática
Quando uma classe depende de outra, alguém precisa montar essa relação.
Sem Spring, o caminho mais comum é resolver isso manualmente dentro do próprio código.
Com Spring, a classe apenas declara o que precisa. O container cria os objetos certos e entrega a dependência pronta.
Isso reduz acoplamento e tira da classe a responsabilidade de saber como montar toda a estrutura ao redor dela.
Um exemplo mínimo
@Component
public class EmailService {
}
@Component
public class PedidoService {
private final EmailService emailService;
public PedidoService(EmailService emailService) {
this.emailService = emailService;
}
}
Aqui, PedidoService depende de EmailService.
Mas em nenhum momento ele faz new EmailService().
Ele só declara a dependência no construtor.
O Spring cria os Beans e faz essa ligação automaticamente.
Onde isso encosta em IoC
No post anterior sobre IoC, o ponto central era a troca de controle.
IoC explica por que o Spring passa a criar os objetos.
DI mostra o efeito prático disso: como o container controla a criação, ele também consegue conectar as dependências sem que cada classe precise fazer esse trabalho manualmente.
IoC troca o controle. DI monta a relação.
O ponto que muda sua leitura do Spring
Dependency Injection não é um detalhe decorativo do framework.
É o mecanismo que transforma classes soltas em uma aplicação montada pelo container.
Quando você entende isso, Spring deixa de parecer um conjunto de anotações convenientes e passa a fazer sentido como modelo de construção da aplicação.
