Bean lifecycle: instantiate (constructor) → inject dependency (@Autowired) → @PostConstruct → bean ready → @PreDestroy (khi context đóng).
@PostConstruct — method init gọi sau khi DI xong (trong constructor dependency chưa được inject nên không init ở đó được): load cache từ DB, validate config, khởi tạo connection pool.
@PreDestroy — giải phóng resource khi shutdown: đóng connection pool, flush buffer, unregister khỏi external service.
Thay thế: implement InitializingBean/DisposableBean hoặc @Bean(initMethod, destroyMethod) — @PostConstruct/@PreDestroy được ưu tiên vì là chuẩn Jakarta, không phụ thuộc Spring API.