on
스프링 빈(Bean)
예제로 배우는 스프링 입문 (개정판)의 내용을 정리하는 포스트
스프링 빈(Bean)
빈(Bean)
일반적인 객체인데 스프링 IoC 컨테이너가 관리하는 객체를 빈(Bean)이라고 한다. 가령 어떠한 객체를 만들었을 때, 직접 new
를 사용하여 만든 그 객체는 빈이 아니다.
그렇다면 어떻게 만들 수 있을까? 어떻게 특정한 인스턴스를 빈으로 할 수 있을까? 그 방법은 크게 두 가지가 있다.
Component Scanning
첫 번째는 Component Scan
이다. Annotation Processor
중에 스프링 IoC 컨테이너가 사용하는, 컨테이너를 만들고 안에 빈을 등록할 때 사용하는, 여러가지 인터페이스들을 LifeCycle CallBack
이라고 한다. 이러한 LifeCycle CallBack
중에 annotation
을 찾아서 해당 annotation
이 붙어 있는 모든 클래스의 인스턴스를 만들어서 빈으로 등록하는 처리기가 등록되어 있다.
Component Scan
이라는 annotation
은 어디부터 컴포넌트를 찾아보라고 알려주는 역할을 한다. 알려주는 위치부터 모든 하위 패키지의 클래스를 찾아보게 된다.
Component
라는 annotation
을 사용한 annotation
이 몇 가지 있다.
- @Component
- @Repository
- @Service
- @Controller
- @Configuration
외에도 직접 정의할 수도 있는데, 이런 annotation
이 붙어 있는 모든 클래스를 찾아서 빈으로 등록해주는게 Component Scan
이라는 기능이다.
직접 Xml이나 설정 파일에 등록
또 다른 방법은 직접 빈으로 등록하는 것인데, 빈 설정파일이 Xml이냐 자바 설정 파일이냐에 따라 다르다.
자바 설정 파일의 경우
package org.springframework.samples.petclinic.sample;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SampleConfig {
@Bean
public SampleController sampleController() {
return new SampleController();
}
}
와 같이 Configuration
이라는 annotation
이라는 붙어있는 클래스 안에 Bean
이라는 annotation
을 사용해서 직접 정의 할 수 있다. 메소드에서 리턴하는 객체 자체가 IoC 컨테이너 안에 빈으로 등록된다.
Reference
Comments
SPRING 의 다른 글
-
스프링 타입 컨터버 24 Jun 2022
-
API 예외 처리 17 Jun 2022
-
예외 처리와 오류 페이지 12 Jun 2022
-
로그인 처리 - 인터셉터 08 Jun 2022
-
로그인 처리 - 필터 06 Jun 2022
-
로그인 처리 - 쿠키, 세션 31 May 2022
-
Bean Validation 22 May 2022
-
검증 22 May 2022
-
메시지, 국제화 21 May 2022
-
타임리프 - 스프링 통합과 폼 19 May 2022
-
타임리프 - 기본 기능 10 May 2022
-
스프링 MVC 기본 기능 - 웹 페이지 만들기 02 May 2022
-
스프링 MVC 기본 기능 - HTTP 응답 30 Apr 2022
-
스프링 MVC 기본 기능 - HTTP 요청 24 Apr 2022
-
스프링 MVC 기본 기능 - 요청 매핑 19 Apr 2022
-
스프링 MVC 기본 기능 19 Apr 2022
-
스프링 MVC 구조 이해 14 Apr 2022
-
MVC 프레임워크 만들기 - V4, V5 12 Apr 2022
-
MVC 프레임워크 만들기 - V1, V2, V3 09 Apr 2022
-
서블릿, JSP, MVC 패턴 05 Apr 2022
-
서블릿 29 Mar 2022
-
웹 애플리케이션 이해 24 Mar 2022
-
스프링 웹 계층이란? 05 Nov 2021
-
스프링 시큐리티 공식문서 번역 27 Sep 2021
-
스프링 AOP 총정리 : 개념, 프록시 기반 AOP, @AOP 27 Apr 2021
-
SpEL (스프링 Expression Language) 25 Apr 2021
-
데이터 바인딩 추상화 : Converter와 Formatter 21 Apr 2021
-
데이터 바인딩 추상화 : PropertyEditor 12 Apr 2021
-
Validation 추상화 10 Apr 2021
-
Resource 추상화 08 Apr 2021
-
IoC 컨테이너 9부 07 Apr 2021
-
IoC 컨테이너 8부 06 Apr 2021
-
IoC 컨테이너 7부 02 Apr 2021
-
IoC 컨테이너 6부 29 Mar 2021
-
IoC 컨테이너 5부 27 Mar 2021
-
IoC 컨테이너 4부 23 Mar 2021
-
IoC 컨테이너 3부 20 Mar 2021
-
IoC 컨테이너 2부 18 Mar 2021
-
IoC 컨테이너 1부 12 Mar 2021
-
스프링 PSA 07 Jan 2021
-
스프링 @AOP 실습 07 Jan 2021
-
프록시 패턴 06 Jan 2021
-
스프링 AOP 04 Jan 2021
-
의존성 주입(Dependency Injection) 04 Jan 2021
-
스프링 빈(Bean) 02 Jan 2021
-
스프링 IoC 컨테이너 01 Jan 2021
-
스프링 IoC 01 Jan 2021