Skip to main content

πŸŒ±πŸ”„ Spring Bean Lifecycle — From Birth to Goodbye, Explained with Fun & Code! πŸš€

πŸŒ±πŸ”„ Spring Bean Lifecycle — From Baby Bean to Farewell Party! πŸŽ‰

Ever wondered how a Spring bean is born, grows up, works hard, and finally retires? Let’s take a fun, easy walk through its entire journey — perfect for freshers and curious developers! πŸš€


1️⃣ Bean Instantiation — “The Birth” πŸ‘Ά

Easy words: Spring creates an empty object of your bean class.



@Component

public class MyBean {

    public MyBean() {

        System.out.println("Bean is born! πŸ‘Ά");

    }

}

What’s really happening: Spring uses reflection (Java’s ability to create objects without directly calling new) to make a new instance.

πŸ˜‚ Analogy: Like registering a newborn in a hospital — the baby is there, but not yet ready to work!


2️⃣ Dependency Injection — “Feeding the Baby” 🍼

Easy words: Spring injects the required data/services into your bean.



@Component

public class MyBean {

    @Autowired

    private MyService service;

}

What’s really happening: Spring checks the bean’s fields/constructors and injects matching beans from the container.

πŸ˜‚ Analogy: Like giving the baby food and clothes so they can survive!


3️⃣ Aware Interfaces — “Bean Learns About the World” 🌍

Easy words: If your bean implements special interfaces, Spring will pass info like its name or context.



@Component

public class MyBean implements BeanNameAware {

    @Override

    public void setBeanName(String name) {

        System.out.println("My bean name is: " + name);

    }

}

What’s really happening: Spring calls these methods so your bean “knows” about the container.

πŸ˜‚ Analogy: Like telling the baby their name, home address, and city.


4️⃣ @PostConstruct / InitializingBean — “Getting Ready for Work” πŸ’Ό

Easy words: Spring calls your init method after all injections are done.



@Component

public class MyBean {

    @PostConstruct

    public void init() {

        System.out.println("Bean is ready to work!");

    }

}

What’s really happening: Any method marked with @PostConstruct or afterPropertiesSet() is called before the bean is available for use.

πŸ˜‚ Analogy: Like the baby learning skills before starting the job.


5️⃣ Bean in Use — “Doing the Job” πŸ—

Easy words: The bean now serves requests in your application.

What’s really happening: The bean stays in the container, handling calls until the application shuts down.

πŸ˜‚ Analogy: Like an adult working daily to earn salary.


6️⃣ @PreDestroy / DisposableBean — “Retirement” πŸ–

Easy words: Before the container closes, Spring calls your cleanup method.



@Component

public class MyBean {

    @PreDestroy

    public void cleanup() {

        System.out.println("Bean is cleaning up before retirement!");

    }

}

What’s really happening: This is where you close connections, release resources, etc.

πŸ˜‚ Analogy: Like returning office laptop and saying goodbye on the last day.

πŸ›  Spring Bean Lifecycle – Diagrammatic Representation

Bean Instantiated
(Constructor)
Properties Set
(Setter Injection)
Aware Interfaces
(BeanNameAware, BeanFactoryAware...)
postProcessBeforeInitialization
afterPropertiesSet / init-method
postProcessAfterInitialization
Bean Ready to Use
destroy-method / DisposableBean.destroy

🎯 Wrapping Up

Spring beans aren’t just “magically” there — they have a full life story. Understand these stages, and you’ll debug and design much better. 🌟

πŸ’¬ Have you ever added a @PostConstruct and been shocked when it didn’t run? Share your story below!

Comments

Popular posts from this blog

🐱 Tomcat vs ⚡ Netty – Which One Should You Use?

🐱 Tomcat vs ⚡ Netty – Which One Should You Use? So recently I got curious about this too πŸ€”. Everywhere in Spring Boot tutorials we see Tomcat . Then suddenly while exploring Spring WebFlux , the name Netty pops up. And I was like – “Wait, who’s this Netty guy trying to replace Tomcat?” πŸ˜… Let’s break it down with real-time examples , icons , and fun comparisons . 🐱 Tomcat – The Traditional Web Server Type: Servlet Container (blocking I/O) World: Used with Spring MVC Style: Thread-per-request model πŸ‘©‍πŸ’» Pros: Stable, widely used, battle-tested Cons: Struggles with huge concurrent connections πŸ‘‰ Example in real life: Tomcat is like a restaurant with fixed waiters 🍴. - Each customer = one thread/waiter - If too many customers come in at once → waiters run out → customers wait outside πŸšͺ ⚡ Netty – The Reactive Rockstar Type: Asynchronous Event-Driven Network Framework World: Default for Spring WebFlux Style: Event-lo...

🎭 Spring’s Secret: Why @Transactional & Friends Betray You Silently

πŸ’‘ Lesson Learned — Not a Prod Bug, But a Real Pain No, this wasn’t a production outage. Nobody screamed at me. But I sat for 3 hours wondering: “Why the heck is my @Transactional not rolling back!?” 😡‍πŸ’« “Why is Redis cache not working?” 🀯 Turned out, the issue was one silent villain: 🧱 Self-invocation 🀷 What Is @Transactional ? If you're new: @Transactional = Tells Spring to start a DB transaction when a method is called. It’ll commit if everything’s okay. It’ll rollback if something fails. 🧠 Think of it like wrapping your code in: try { beginTransaction(); // your logic commit(); } catch(Exception e) { rollback(); } πŸ•΅️ Real-Life Analogy — The Gateway Community 🏘️ Let me tell you about my society — it has a strict watchman at the gate. Here’s how it works: πŸ›‚ Watchman = Spring Proxy 🏠 Your apartment = Your service class πŸšͺ Your room = A method inside that class πŸƒ Scenario 1: Outsider Visits Your friend from outside...

🌟 My Journey – From Zero to Senior Java Tech Lead 🌟

 There’s one thing I truly believe… If I can become a Java developer, then anyone in the world can. πŸ’― Sounds crazy? Let me take you back. πŸ•“ Back in 2015… I had zero coding knowledge . Not just that — I had no interest in coding either. But life has its own plans. In 2016, I got a chance to move to Bangalore and joined a Java course at a training center. That’s where it all started — Every day, every session made me feel like: "Ohhh! Even I can be a developer!" That course didn’t just teach Java — it gave me confidence . πŸ§ͺ Two Life-Changing Incidents 1️⃣ The Interview That Wasn't Planned Halfway through my course, I had to urgently travel to Chennai to donate blood to a family member. After that emotional rollercoaster, I found myself reflecting on my skills and the future. The next day, as I was preparing for my move to Bangalore to complete the remaining four months of my course, I randomly thought — "Let me test my skills... let me just see...