List, Set, Map, HashMap의 차이
스프링 컨테이너(Spring Container)에 대해 설명해주세요.
Spring Container는 스프링 프레임워크의 핵심 컴포넌트
객체의 생성, 관리, 및 의존성 주입(Dependency Injection)을 담당하는 역할
스프링 컨테이너는 애플리케이션을 구성하는 객체들을 생성하고,
객체 간의 의존성을 해결하여 객체들을 조립하고 관리.
이는 개발자가 객체의 생성과 라이프사이클 관리에 대한 부분을 스프링 컨테이너에 위임해 개발자가 비즈니스 로직에 집중할 수 있도록 도움
Spring Container는 빈(Bean)이라고 불리는 객체를 생성하고 관리.
Bean은 스프링 컨테이너에 등록되어 컨테이너에 의해 생성되고 관리되는 객체를 의미.
Bean은 XML, 어노테이션 or 자바 설정 파일을 통해 정의,
스프링 컨테이너는 이러한 빈의 설정 정보를 기반으로 객체를 생성하고 필요한 의존성 주입.
-> 스프링 컨테이너는 자바 객체의 생명주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능 제공.
스프링에서는 자바 객체를 빈(Bean)이라고 함.
즉, 스프링 컨테이너는 내부에 존재하는 빈의 생명주기를 관리(생성, 관리 제어 등)하며,
생성된 빈에게 추가적인 기능을 제공
Spring Container는 Beanfactory와 ApplicationContext 두 종류의 인터페이스로 구현
빈팩토리 -> 빈의 생성과 관계 설정 같은 제어를 담당하는 IoC 오브젝트
애플리케이션 컨텍스트 - 빈 팩토리를 좀 더 확장한 것. IoC 방식을 따라 만들어진 일종의 빈팩토리.
주로 사용되는건 애플리케이션 컨텍스트.
스프링 컨테이너의 최상위 인터페이스
빈을 등록, 생성, 조회 등의 빈을 관리하는 역할.
getBean() 메서드를 통해 빈을 인스턴스화함.
@Bean 어노테이션이 붙은 메서드의 이름을 스프링 빈 이름으로 사용해 빈 등록.
BeanFactory의 기능을 상속받아 제공.
빈을 관리하고 검색하는 기능은 BeanFactory, 그 외의 부가 기능 제공.