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.