Bird
Raised Fist0
Spring Bootframework~10 mins

Bean lifecycle overview in Spring Boot - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a Spring bean using annotation.

Spring Boot
@Component
public class MyService {
    // Bean logic here
}

// The annotation [1] marks this class as a Spring bean.
Drag options to blanks, or click blank then click option'
A@Repository
B@Service
C@Component
D@Controller
Attempts:
3 left
💡 Hint
Common Mistakes
Using @Service or @Repository when the question asks for a generic bean annotation.
Forgetting to add any annotation.
2fill in blank
medium

Complete the code to implement a method that runs after bean initialization.

Spring Boot
public class MyBean implements InitializingBean {
    @Override
    public void [1]() throws Exception {
        System.out.println("Bean is initialized");
    }
}
Drag options to blanks, or click blank then click option'
AafterPropertiesSet
Bstart
Cinit
DpostConstruct
Attempts:
3 left
💡 Hint
Common Mistakes
Using @PostConstruct annotation method name instead of interface method.
Using a method name not defined in InitializingBean.
3fill in blank
hard

Fix the error in the bean destruction method name.

Spring Boot
public class MyBean implements DisposableBean {
    @Override
    public void [1]() throws Exception {
        System.out.println("Bean is being destroyed");
    }
}
Drag options to blanks, or click blank then click option'
Adestroy
Bdestroyed
Cdestroy()
DdestroyBean
Attempts:
3 left
💡 Hint
Common Mistakes
Adding parentheses in the method name placeholder.
Using incorrect method names like destroyBean or destroyed.
4fill in blank
hard

Fill both blanks to define a bean with custom init and destroy methods.

Spring Boot
@Bean(initMethod = "[1]", destroyMethod = "[2]")
public MyBean myBean() {
    return new MyBean();
}
Drag options to blanks, or click blank then click option'
AcustomInit
BcustomDestroy
Cinit
Ddestroy
Attempts:
3 left
💡 Hint
Common Mistakes
Using default method names instead of custom ones.
Mixing up init and destroy method names.
5fill in blank
hard

Fill all three blanks to create a bean with lifecycle annotations.

Spring Boot
public class MyBean {

    @[1]
    public void start() {
        System.out.println("Bean started");
    }

    @[2]
    public void stop() {
        System.out.println("Bean stopped");
    }

    @[3]
    public void cleanup() {
        System.out.println("Bean cleaned up");
    }
}
Drag options to blanks, or click blank then click option'
APostConstruct
BPreDestroy
CPreDestroyMethod
DPostDestroy
Attempts:
3 left
💡 Hint
Common Mistakes
Using non-existent annotations like @PreDestroyMethod or @PostDestroy.
Mixing up PostConstruct and PreDestroy.

Practice

(1/5)
1. Which of the following best describes the lifecycle of a Spring bean?
easy
A. Creation, initialization, use, and destruction
B. Compilation, execution, and garbage collection
C. Declaration, inheritance, and polymorphism
D. Loading, linking, and running

Solution

  1. Step 1: Understand Spring bean lifecycle phases

    Spring beans go through creation, initialization, usage, and destruction phases during their lifecycle.
  2. Step 2: Compare options with lifecycle phases

    Only Creation, initialization, use, and destruction correctly lists these phases. Other options describe unrelated programming concepts.
  3. Final Answer:

    Creation, initialization, use, and destruction -> Option A
  4. Quick Check:

    Bean lifecycle = Creation, init, use, destroy [OK]
Hint: Remember bean lifecycle phases: create, init, use, destroy [OK]
Common Mistakes:
  • Confusing bean lifecycle with Java program lifecycle
  • Mixing bean lifecycle with object-oriented concepts
  • Thinking lifecycle only involves creation and destruction
2. Which annotation is used in Spring to run a method after a bean's properties have been set?
easy
A. @PostConstruct
B. @PreDestroy
C. @Autowired
D. @Bean

Solution

  1. Step 1: Identify annotation for post-initialization

    @PostConstruct is the annotation used to mark a method to run after bean properties are set.
  2. Step 2: Eliminate other annotations

    @PreDestroy runs before destruction, @Autowired injects dependencies, and @Bean defines a bean method.
  3. Final Answer:

    @PostConstruct -> Option A
  4. Quick Check:

    @PostConstruct runs after properties set [OK]
Hint: PostConstruct runs after init, PreDestroy before destroy [OK]
Common Mistakes:
  • Confusing @PreDestroy with @PostConstruct
  • Using @Autowired for lifecycle methods
  • Thinking @Bean runs after initialization
3. Given this Spring bean code snippet, what will be printed when the bean is initialized?
@Component
public class MyBean {
  @PostConstruct
  public void init() {
    System.out.println("Bean initialized");
  }
}
medium
A. Bean destroyed
B. No output
C. Bean initialized
D. Compilation error

Solution

  1. Step 1: Understand @PostConstruct behavior

    The method annotated with @PostConstruct runs after the bean is created and properties set, printing "Bean initialized".
  2. Step 2: Check output possibilities

    Since the method prints a message on init, output will be "Bean initialized". No errors or destruction messages occur here.
  3. Final Answer:

    Bean initialized -> Option C
  4. Quick Check:

    @PostConstruct prints "Bean initialized" [OK]
Hint: PostConstruct method runs once after bean creation [OK]
Common Mistakes:
  • Expecting output on bean destruction instead
  • Thinking no output occurs without explicit call
  • Confusing syntax causing compilation errors
4. What is wrong with this Spring bean code if the cleanup() method is never called?
@Component
public class MyBean {
  public void cleanup() {
    System.out.println("Cleaning up");
  }
}
medium
A. cleanup method should be static
B. Missing @PreDestroy annotation on cleanup method
C. Missing @PostConstruct annotation on cleanup method
D. cleanup method must return a value

Solution

  1. Step 1: Identify lifecycle annotation for destruction

    The cleanup method should be annotated with @PreDestroy to run before bean destruction.
  2. Step 2: Check other options for correctness

    @PostConstruct is for initialization, static or return value are not required for lifecycle methods.
  3. Final Answer:

    Missing @PreDestroy annotation on cleanup method -> Option B
  4. Quick Check:

    @PreDestroy needed to run cleanup before destroy [OK]
Hint: Use @PreDestroy to run code before bean destruction [OK]
Common Mistakes:
  • Using @PostConstruct instead of @PreDestroy for cleanup
  • Making cleanup static unnecessarily
  • Expecting cleanup to run without annotation
5. You want to ensure a Spring bean runs a method both after initialization and before destruction. Which combination correctly achieves this?
hard
A. Implement InitializingBean interface only
B. Annotate the same method with both @PostConstruct and @PreDestroy
C. Use @Autowired on init method and @PreDestroy on destroy method
D. Annotate one method with @PostConstruct and another with @PreDestroy

Solution

  1. Step 1: Understand lifecycle annotations usage

    @PostConstruct runs after initialization, @PreDestroy runs before destruction; they must be on separate methods.
  2. Step 2: Evaluate other options

    Annotating the same method with both annotations is invalid. @Autowired is for injection, not lifecycle. Implementing InitializingBean interface only handles post-initialization but not destruction.
  3. Final Answer:

    Annotate one method with @PostConstruct and another with @PreDestroy -> Option D
  4. Quick Check:

    Separate methods with @PostConstruct and @PreDestroy [OK]
Hint: Use separate methods for init (@PostConstruct) and destroy (@PreDestroy) [OK]
Common Mistakes:
  • Trying to use one method for both init and destroy
  • Confusing @Autowired with lifecycle annotations
  • Using InitializingBean interface only
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard