Spring 컨테이너가 Bean을 생성하고 소멸할 때까지 관리합니다.
이렇게 하면 개발자가 직접 객체를 생성하고 관리할 필요 없이 Spring이 알아서 해줍니다.
@Component
public class MyService {
public void doSomething() {
System.out.println("Hello from MyService!");
}
}
@Component 어노테이션 덕분에 Spring Bean으로 등록됨.Spring에서는 Bean을 필요한 곳에 자동으로 주입(Inject) 해줍니다.
@Service
public class UserService {
private final MyService myService;
@Autowired // MyService Bean을 자동으로 주입
public UserService(MyService myService) {
this.myService = myService;
}
public void useService() {
myService.doSomething();
}
}
UserService가 MyService를 직접 생성하는 것이 아니라, Spring이 알아서 의존성을 주입.Spring Boot에서 등록된 Bean은 기본적으로 싱글턴(단일 인스턴스)으로 관리됩니다.
즉, 같은 Bean을 여러 곳에서 사용해도 하나의 객체만 사용됩니다.
@Component
public class SingletonBean {
public SingletonBean() {
System.out.println("SingletonBean 생성됨!");
}
}
@Service
public class TestService {
@Autowired
private SingletonBean singletonBean1;
@Autowired
private SingletonBean singletonBean2;
public void checkSingleton() {
System.out.println(singletonBean1 == singletonBean2); // true
}
}
SingletonBean이 여러 곳에서 사용되지만 하나의 객체만 생성됨.