개발 일지/Spring

[Spring] 빈

미숫가루설탕많이 2023. 2. 6. 15:07

 빈(Bean)은 스프링 컨테이너에 의해 관리되는 재사용 소프트웨어 컴포넌트이며, Spring 컨테이너가 관리하는 자바 객체(POJO)를 의미한다.

 

 스프링은 보통 스프링 컨테이너에 빈 인스턴스를 한 개만 저장하는 싱글톤 방식을 채택하고 있다.

 

 빈은 클래스의 등록정보, getter/setter 메서드를 포함하며, 컨테이너에 사용되는 설정 메타데이터로 생성된다.

 

 설정 메타데이터는 XML 또는 자바 애너테이션, 자바 코드로 표현하고 컨테이너의 명령과 인스턴스화, 설정, 조립할 객체를 정의한다.

 

 

 

 

빈 등록방식

 

  • Component Scan
    - 클래스 위에 @Component를 붙이면 스프링이 알아서 컨테이너에 빈을 등록한다.
    - 개발자가 직접 컨트롤이 가능한 클래스의 경우에 사용한다.

  • Java 코드
    - 클래스를 생성하고 @Configuration 애너테이션을 붙인 후 인스턴스를 생성하는 메서드 위에 @Bean을 명시한다.
    - 외부 라이브러리를 빈으로 등록하고 싶은 경우에 사용한다.
  • 수동 등록

 

 

 

 

빈 스코프

 

  • singleton
    : 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이며, Default값이다. 각 Spring 컨테이너에 대한 단일 객체 인스턴스에 대한 단일 bean definition의 범위를 지정한다.

  • protorype
    : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프
  • request
    : 웹 요청이 들어오고 나갈 때까지 유지되는 스코프

  • session
    : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프

  • application
    : 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프

  • websocket
    : 단일 bean definition 범위를 WebSocket의 라이프사이클까지 확장한다. Spring ApplicationContext의 컨텍스트에서만 유효

'개발 일지 > Spring' 카테고리의 다른 글

[Spring] 의존관계 주입 방법  (0) 2023.02.07
[Spring] Component Scan  (0) 2023.02.07
[Spring] 스프링 컨테이너  (0) 2023.02.06
[Spring] Spring Boot  (0) 2023.02.03
[Spring] PSA  (0) 2023.02.02