Unveiling the Process of Bean Creation in Spring Boot: A Comprehensive Guide

Aashi Gangrade
2 min readDec 17, 2023

--

Introduction

Welcome to the world of Spring Boot, where building robust and scalable applications is a breeze. One of the key concepts in Spring Boot development is the creation and configuration of beans. In this comprehensive guide, we’ll unravel the various ways you can create beans in a Spring Boot application.

1. Implicit Component Scanning

Spring Boot makes life easy by automatically scanning for components within specified packages. Just use the @Component annotation to classify a class as @Service, @Repository, or @Controller. Then, Spring Boot will handle everything else.

@Service
public class MyService {
//...
}

2. Explicit Component Scanning

For finer control over component scanning, use @ComponentScan to specify the packages to scan for components.

@SpringBootApplication
@ComponentScan(basePackages = "com.example")
public class MyApplication {
//...
}

3. XML Configuration

Old-school XML configuration is still an option. Define beans in an XML configuration file, typically named applicationContext.xml.

<beans>
<bean id="myBean" class="com.example.MyBean"/>
</beans>

4. Java Configuration

Embrace the power of Java with @Configuration annotated classes. Define beans using @Bean methods.

@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}

5. Factory Method

Sometimes, a factory method is the answer. Create and configure a bean using a dedicated factory method.

public class MyBeanFactory {
public MyBean createBean() {
// instantiation and configuration logic
return new MyBean();
}
}

6. Conditional Bean Creation

Control bean creation based on certain conditions using the @Conditional annotation.

@ConditionalOnProperty(name = "my.property")
@Bean
public MyConditionalBean myConditionalBean() {
return new MyConditionalBean();
}

7. InitializingBean and DisposableBean Interfaces

Implement InitializingBean and DisposableBean interfaces for custom initialization and destruction logic.

public class MyBean implements InitializingBean, DisposableBean {
@Override
public void afterPropertiesSet() throws Exception {
// Initialization logic
}
    @Override
public void destroy() throws Exception {
// Destruction logic
}
}

8. @Bean Initialization and Destruction Methods

Fine-tune initialization and destruction using @Bean annotation attributes initMethod and destroyMethod.

@Bean(initMethod = "init", destroyMethod = "cleanup")
public MyBean myBean() {
return new MyBean();
}

9. @PostConstruct and @PreDestroy Annotations

Harness the power of annotations with @PostConstruct and @PreDestroy for custom initialization and destruction.

public class MyBean {
@PostConstruct
public void init() {
// Initialization logic
}
    @PreDestroy
public void cleanup() {
// Destruction logic
}
}

Conclusion

Creating beans in Spring Boot might seem overwhelming initially, but with these different approaches, you will be ready to handle any situation. Spring Boot adapts to your preferences, offering both component scanning and XML configuration. Happy coding! 🌐✨

--

--

Aashi Gangrade

Software Engineer 2 at Intuit | Backend Developer (Java + Kotlin)