본문 바로가기

기술면접준비

스프링 빈

 

 

스프링 Bean이란

개발자가 자바 코드로 직접 관리하는 객체가 아닌, 스프링 컨테이너가 자동으로 관리하는 객체!

 

예시 : 스프링 컨테이너가 관리하는 객체

 

@Service 

  •  이 어노테이션이 붙은 클래스는 스프링 컨테이너에 의해 관리됨
  • service 는 repository에 의존성이 있음 이건 스프링 컨테이너가 주입해줌
  • 스프링 컨테이너는 객체를 생성할 때 의존성 자동으로 주입하고 객체의 생명주기 관리

스프링컨테이너를 사용하는 이유?

  • 서로 의존성이 있는 객체들을 직접 생성하지 않고, 컨테이너가 필요한거 자동으로 해줌
  • 생명주기 자동으로 관리해줘서 코드가 깔끔하고 유지보수 쉬움
  • 스프링컨테이너 통해 의존성 주입하면 테스트할 때 가짜객체(mock)를 주입하는 등의 작업이 훨 쉬움
  • 객체간 의존성 유연하게 설정 가능

@Bean 사용하는 이유

  • 외부 라이브러리에서 제공하는 클래스들을 스프링 컨테이너에 등록할 때 사용. 외부 라이브러리의 클래스는 스프링 컴포넌트 스캔이 적용되지 않기 때문이다
  • 특정 초기화 과정이 필요할 때