1) 객체의 생성 및 관리

Spring 컨테이너가 Bean을 생성하고 소멸할 때까지 관리합니다.

이렇게 하면 개발자가 직접 객체를 생성하고 관리할 필요 없이 Spring이 알아서 해줍니다.

@Component
public class MyService {
    public void doSomething() {
        System.out.println("Hello from MyService!");
    }
}

2) 의존성 주입(DI, Dependency Injection)

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();
    }
}

3) 싱글턴 패턴 (기본)

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
    }
}