A bean in Spring is an object that Spring manages for you. It helps organize and reuse parts of your app easily.
Bean concept in Spring in Spring Boot
@Component public class MyBean { // your code here } // or @Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); } }
@Component tells Spring to create and manage this class as a bean automatically.
@Bean is used inside a configuration class to define a bean manually.
@Component
public class UserService {
// business logic
}@Configuration public class AppConfig { @Bean public UserService userService() { return new UserService(); } }
@Autowired private UserService userService;
This Spring Boot app defines a GreetingService bean with @Component. It injects it into the main app class using @Autowired. When run, it prints a greeting message from the bean.
import org.springframework.stereotype.Component; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @Component class GreetingService { public String greet() { return "Hello from Spring Bean!"; } } @SpringBootApplication public class BeanExampleApp implements CommandLineRunner { @Autowired private GreetingService greetingService; public static void main(String[] args) { SpringApplication.run(BeanExampleApp.class, args); } @Override public void run(String... args) throws Exception { System.out.println(greetingService.greet()); } }
Beans are single instances by default (singleton scope) unless configured otherwise.
Use @ComponentScan or @SpringBootApplication to tell Spring where to find beans.
Beans help keep your code clean by separating creation and usage.
Beans are objects managed by Spring to help organize your app.
You create beans using @Component or @Bean annotations.
Spring injects beans where needed to connect your app parts easily.
Practice
Bean in the Spring framework?Solution
Step 1: Understand Spring's role
Spring manages objects to help organize and connect parts of an application.Step 2: Define what a Bean is
A Bean is any object that Spring creates and manages in its container.Final Answer:
An object managed by the Spring container -> Option CQuick Check:
Bean = Managed object [OK]
- Confusing beans with database connections
- Thinking beans are UI elements
- Assuming beans are exceptions
Solution
Step 1: Identify annotations for beans
@Component marks a class as a Spring-managed bean.Step 2: Differentiate from other annotations
@Qualifier specifies which bean to inject, @Autowired injects beans, @RequestMapping maps web requests.Final Answer:
@Component -> Option BQuick Check:
@Component = Bean declaration [OK]
- Confusing @Autowired with bean declaration
- Using @RequestMapping for beans
- Thinking @Qualifier declares beans
@Component
public class MyBean {
public String greet() { return "Hello Spring"; }
}
@Autowired
MyBean myBean;
System.out.println(myBean.greet());Solution
Step 1: Understand @Component and @Autowired
@Component creates the bean, @Autowired injects it into the field.Step 2: Check method call output
Calling greet() returns "Hello Spring", so it prints that string.Final Answer:
Hello Spring -> Option AQuick Check:
Injected bean method returns greeting [OK]
- Assuming null because of missing initialization
- Thinking it causes compile error
- Expecting no output without System.out.println
@Component
public class MyService {
@Autowired
private MyRepository repo;
public void doWork() {
repo.save();
}
}Assuming
MyRepository is not annotated as a bean.Solution
Step 1: Check bean injection requirements
Spring can only inject beans that are managed by the container.Step 2: Identify missing bean annotation
MyRepository lacks @Component or similar, so Spring cannot inject it.Final Answer:
MyRepository is not a Spring bean, so injection fails -> Option DQuick Check:
Injection requires bean annotation [OK]
- Thinking @Service is mandatory for injection
- Assuming method must return value
- Confusing @Autowired placement
Solution
Step 1: Understand @Bean usage
@Bean annotation on a method inside a @Configuration class defines a bean returned by that method.Step 2: Differentiate from other annotations
@Component is for classes, not methods; @Autowired injects dependencies, not defines beans.Final Answer:
@Bean public MyBean myBean() { return new MyBean("custom"); } -> Option AQuick Check:
@Bean method returns custom bean [OK]
- Using @Component on methods instead of classes
- Omitting @Bean annotation
- Confusing @Autowired with bean creation
Ready to prove it?
Pass the test and this pattern moves unknown
