Spring과 Bean
Spring에서는 Spring Container, IoC Container라는 개념이 있음
Container는 인스턴스의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 함
즉 Container는 개발자가 작성한 코드의 처리과정을 위임받은 독립적인 존재
Container는 적절한 설정만 되어있다면 누구의 도움 없이도 작성한 코드를 스스로 참조한 뒤 알아서 객체의 생성과 소멸을 컨트롤해 줌
Spring Container는 Spring Framework의 핵심부에 위치하며, 종속 객체 주입을 이용하여 Application을 구성하는 Component들을 관리함
이때 Spring Container에서 생성되는 객체를 Bean이라고 함
Bean
Bean은 Spring IoC Container가 관리하는 자바 객체, Spring Bean Container에 존재하는 객체를 말함
Spring IoC(Inversion of Control) Contatiner에 의해 인스턴스화, 관리, 생성됨
Bean Container는 의존성 주입을 통해 Bean 객체를 사용할 수 있도록 해줌
Spring에서 Bean은 보통 Singleton으로 존재
Singleton 👉 어떤 Class가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 객체를 만들어 사용하는 디자인 패턴
Spring에서 POJO(Plain Old Java Object)를 Beans라고 부름
POJO 👉 본래 자바의 장점을 살리는 특정 '기술'에 종속되어 동작하는 것이 아닌 '오래된' 방식의 '순수한' 자바객체
Beans는 Application의 핵심을 이루는 객체이며, 대부분 Container에 공급하는 설정 메타 데이터(XML 파일)에 의해 생성됨
Container는 이 메타 데이터를 통해 Bean의 생성, Bean Life Cycle, Bean Dependency(종속성) 등을 알 수 있음
new 연산자로 생성하는 객체는 Bean이 아니고, ApplicationContext.getBean()으로 얻어질 수 있는 객체는 Bean임
즉, Spring에서의 Bean은 ApplicationContext가 알고있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미함
참고 자료 👇
'프로그래밍 > Spring' 카테고리의 다른 글
StringUtils (0) | 2021.07.30 |
---|---|
Bean 생성 (0) | 2021.07.29 |
org.springframework.beans.factory.CannotLoadBeanClassException 해결방법 (0) | 2021.07.01 |
스프링 프레임워크 모듈과 컨테이너(IoC) (0) | 2021.01.25 |
11.24(스프링 MVC 처리 흐름) (0) | 2020.11.24 |