article thumbnail image
Published 2021. 7. 28. 20:29
728x90
반응형

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가 만들어서 그 안에 담고있는 객체를 의미

 


참고 자료 👇

https://velog.io/@gillog/Spring-Bean-%EC%A0%95%EB%A6%AC

반응형
복사했습니다!