본문 바로가기
Spring (Boot)

빈(Bean) 이란?

by taehee.kim.dev 2020. 3. 28.

IoC(Inversion of Control)(의존 관계 주입) : 어떤 객체가, 자신이 사용하는 의존 객체를 객체 내부에서 스스로 직접 만들어 사용하는게 아니라, 외부에서 주입 받아 사용하는 방법.

 

빈(Bean) : Spring IoC(Inversion of Control)(의존 관계 주입)(Dependency Injection) container가 관리하는 Java 객체.

 

빈(Bean)

  • Spring IoC container가 생성, 제공, 및 관리하는 Java 객체.
  • 장점
    • Scope
      • 싱글톤 : 맨 처음 애플리케이션 전체 구동 시 Java 객체 한 개만 생성하여, 매번 요청마다 이 동일한 객체를 제공.
      • 프로토타입 : 요청마다 매 번 새로운 Java 객체를 만들어 제공.
    • 라이프사이클 인터페이스 지원 : IoC container에 등록된 bean에 대해서만 국한된 이야기. ex) @PostConstruct.
/*
    어떤 class 내부에 한 method가 있을 때,
    이 method 위에 @PostConsturct 애노테이션이 붙어있다면,
    해당 class가 IoC container에 의해 생성된 직후(Post)에
    @PostConstruct가 붙어있는 method가 실행된다.
*/

@PostConstruct
public void example(){
	System.out.println("이 method가 들어있는 class의 객체가
    	IoC container에 의해 생성된 직후(Post)에 이 method가 실행됨.");
}

 

스프링 IoC 컨테이너

  • BeanFactory라고도 한다.
  • 빈(Bean)들의 중앙 관리 저장소
  • 빈 설정 파일들로부터 빈 정의들을 읽어서 빈을 만들고, 제공 및 관리한다.

의존성의 문제점 : 주입받은 외부 객체의 클래스를 구현하지 않고서는, 외부 객체를 주입받아 사용하는 클래스의 객체 단위 테스트를 할 수 없다. 왜냐하면, 외부 객체를 주입받아 사용하는 클래스는 외부 객체에 "의존"하고 있기 때문이다. 이것의 의존성의 문제점이다.

'Spring (Boot)' 카테고리의 다른 글

API (@ResponseBody)  (0) 2020.11.17
@RequestParam  (0) 2020.11.17
Spring Boot 정적(static) 컨텐츠 처리 방식  (0) 2020.11.17
Spring Boot viewResolver (template engine 방식)  (0) 2020.11.17
빈(Bean) 설정 파일  (0) 2020.03.29

댓글