15 de agosto de 2026 • Java

05 - Ciclo de Vida do Spring Bean

Personalizando o Ciclo de Vida do Bean

Spring permite que você execute lógica personalizada durante o ciclo de vida do Bean, como:

  • Executar código depois que o Bean for inicializado
  • Executar código antes que o Bean seja destruído

Ciclo de Vida do Bean do Spring

Callbacks de Inicialização

A anotação @PostConstruct

O método é executado depois que todas as dependências foram injetadas.

new DatabaseService()

Dependency Injection

@PostConstruct
@Component
public class DatabaseService {

  @PostConstruct
  public void init() {
    System.out.println("Connecting database...");
  }
}

InitializingBean

InitializingBean é uma interface de ciclo de vida do Spring. O método afterPropertiesSet() é chamado depois que todas as propriedades do Bean foram definidas.

@Component
public class CacheService implements InitializingBean {

  @Override
  public void afterPropertiesSet(){
    System.out.println("Cache initialized");
  }

}

A anotação @PreDestroy

Quando o ApplicationContext é fechado, o Spring invoca métodos anotados com @PreDestroy antes de destruir o Bean.

Casos de uso típicos incluem:

  • Fechar conexões de banco de dados
  • Liberar recursos
  • Parar threads em segundo plano
@Component
public class ConnectionPool {

  @PreDestroy
  public void shutdown() {
    System.out.println("Closing connections");
  }
}

DisposableBean

DisposableBean é uma interface de ciclo de vida do Spring. O método destroy() é invocado antes que o Bean seja removido do container.

@Component
public class Worker implements DisposableBean {

  @Override
  public void destroy(){
    System.out.println("Stop worker threads.");
  }

}

Melhor Prática

Na maioria das aplicações Spring Boot, prefira usar @PostConstruct e @PreDestroy em vez de implementar InitializingBean e DisposableBean, pois as anotações mantêm suas classes menos acopladas ao Spring Framework.

← Voltar para o blog