빈(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 |