6 ways to create spring beans.

Ashish Singh
3 min readJul 14, 2024

--

Creating Spring beans in a Spring Boot application can be done using several methods, similar to those in a regular Spring application. Here’s a detailed guide on how to create Spring beans in Spring Boot

1. Using @Component and Stereotype Annotations

The simplest way to create a Spring bean in Spring Boot is to use the @Component annotation or other stereotype annotations like @Service, @Repository, and @Controller. These annotations are typically used on classes to indicate that they are Spring-managed beans.

// Marking the class as a Spring-managed component
@Component
public class MyComponent {
// Implementation code
}

// Using stereotype annotation for service layer
@Service
public class MyService {
// Implementation code
}

// Using stereotype annotation for repository layer
@Repository
public class MyRepository {
// Implementation code
}

// Using stereotype annotation for controller layer
@Controller
public class MyController {
// Implementation code
}

2. Using @Configuration and @Bean Annotations

Another way to create beans is by using a configuration class with @Configuration and defining beans using the @Bean annotation.

@Configuration
public class AppConfig {

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

3. Using @SpringBootApplication

When you use the @SpringBootApplication annotation, it automatically scans the package where the application class is located and its sub-packages for Spring components. This is equivalent to using @Configuration, @EnableAutoConfiguration, and @ComponentScan together.

@SpringBootApplication
public class MySpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(MySpringBootApplication.class, args);
}
}

4. Using @Autowired for Dependency Injection

Once beans are created, you can inject them into other beans using @Autowired. Spring Boot supports constructor injection, field injection, and setter injection.

Constructor Injection (Preferred)

@Service
public class MyService {

private final MyRepository myRepository;

@Autowired
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}

// Implementation code
}

Field Injection

@Service
public class MyService {

@Autowired
private MyRepository myRepository;

// Implementation code
}

Setter Injection

@Service
public class MyService {

private MyRepository myRepository;

@Autowired
public void setMyRepository(MyRepository myRepository) {
this.myRepository = myRepository;
}

// Implementation code
}

5. Using @Conditional Annotations

You can conditionally create beans using @Conditional annotations such as @ConditionalOnProperty, @ConditionalOnClass, etc.

@Configuration
public class ConditionalConfig {

@Bean
@ConditionalOnProperty(name = "feature.enabled", havingValue = "true")
public MyFeatureBean myFeatureBean() {
return new MyFeatureBean();
}
}

6. Using Profiles

Spring Boot allows you to create beans for specific profiles using the @Profile annotation. This is useful for defining beans that should only be loaded in certain environments (e.g., development, production).

@Configuration
@Profile("dev")
public class DevConfig {

@Bean
public MyDevBean myDevBean() {
return new MyDevBean();
}
}

@Configuration
@Profile("prod")
public class ProdConfig {

@Bean
public MyProdBean myProdBean() {
return new MyProdBean();
}
}

Conclusion

Creating Spring beans in Spring Boot is straightforward and follows the principles of the core Spring framework. By using annotations such as @Component, @Service, @Repository, @Controller, @Configuration, and @Bean, you can define and manage your beans efficiently. Additionally, leveraging dependency injection with @Autowired and conditional configurations with profiles and @Conditional annotations ensures that your application is flexible, maintainable, and scalable.

--

--

No responses yet