🔄
Basics

Bean Lifecycle

Birth se Destruction tak
💡 Bean lifecycle ek EMPLOYEE ONBOARDING PROCESS jaisa hai — hire hone ke baad (instantiation), documents fill karte ho (properties set), orientation attend karte ho (initialization callback), kaam karte ho (in use), aur retire hote waqt exit formalities (destruction callback) hoti hain.

Bean lifecycle ke MAIN steps: 1) INSTANTIATION — Spring constructor call karके object banata hai. 2) POPULATE PROPERTIES — dependencies inject hoti hain. 3) INITIALIZATION — @PostConstruct method (ya InitializingBean.afterPropertiesSet()) call hota hai, agar define ho. 4) READY TO USE — bean ab application mein use ke liye available hai. 5) DESTRUCTION — container shutdown hone par, @PreDestroy method (ya DisposableBean.destroy()) call hota hai.

@PostConstruct useful hai jab bean ko dependencies mil jaने ke BAAD kuch setup karna ho (jaise cache warm-up, connection pool initialize karna) — constructor mein ye karna risky hai kyunki dependencies abhi fully inject nahi hui hoti.

@Service
public class CacheService {
    @Autowired
    private DataRepository repository;

    @PostConstruct
    public void init() {
        // Dependencies inject ho chuki hain, ab safe hai:
        System.out.println("Cache warming up...");
        loadInitialData();
    }

    @PreDestroy
    public void cleanup() {
        System.out.println("Closing connections...");
        // resource cleanup, jaise DB connections close karna
    }
}
🔄
Bean lifecycle ek EMPLOYEE ONBOARDING PROCESS jaisa hai — hire hone ke baad (instantiation), documents fill karte ho (properties set), orientation attend karte ho (initialization callback), kaam karte ho (in use), aur retire hote waqt exit formalities (destruction callback) hoti hain.
1 / 2
⚡ Quick Recap
  • Order: Instantiate → Populate properties → @PostConstruct → Ready → @PreDestroy
  • @PostConstruct = setup jo dependencies milne ke BAAD chahiye
  • @PreDestroy = cleanup jab container shutdown hota hai
Is page mein (2 subtopics)

@PostConstruct/@PreDestroy annotations ke ALTERNATIVE, Spring do INTERFACES bhi deता hai — InitializingBean (afterPropertiesSet() method) aur DisposableBean (destroy() method). Ye Spring-SPECIFIC hain (annotations generic Java hain) — isliye MODERN code mein annotations zyaada PREFER kiye jaate hain.

💡Tip: Interfaces use karne se class Spring API se TIGHTLY COUPLE ho jaati hai — annotations (@PostConstruct) ISI wajah se better choice hain, class ko framework-agnostic rakhते hain.

BeanPostProcessor ek ADVANCED interface hai jo HAR bean ke lifecycle mein hook kar sakta hai (initialization se PEHLE aur BAAD mein) — Spring KHUD internally isse use karta hai (jaise @Autowired ko process karne ke liye). Custom BeanPostProcessor RARELY likha jaata hai, lekin Spring ke internals samajhने ke liye important concept hai.

  • postProcessBeforeInitialization() — @PostConstruct se PEHLE
  • postProcessAfterInitialization() — @PostConstruct ke BAAD
  • Spring internally isko AOP proxies banaने ke liye use karta hai