[IoC] Bean

김민중·2025년 2월 17일

Spring Triangle

목록 보기
5/9

스프링 IoC 컨테이너가 관리하는 객체


빈이라는 것은 ApplicationContext가 알고 있는 객체들이다.

어떻게 등록하지?

1. Component Scanning

어노테이션 프로세서 중,

@Component가 붙은 클래스를 찾아서 그 클래스의 인스턴스를 빈으로 등록하는 일을 하는 어노테이션 처리기가 있다.

@SpringBootApplication 어노테이션에는 @ComponentScan 어노테이션이 붙어있는데,

이 어노테이션이 붙은 위치부터 모든 하위 패키지의 모든 하위 클래스를 훑어보며 @Component를 찾아서 빈으로 등록해준다.

  • @Component를 포함하는 어노테이션들
    • @Repository
    • @Service
    • @Controller
    • @Configuration
    • 등등

2. 인터페이스 상속(리포지토리)

리포지토리는 다른 형태로 빈으로 등록되는데,

Spring Data JPA가 제공해주는 기능에 의해 빈으로 등록된다.

어노테이션이 없더라도 특정 인터페이스를 상속받은 경우,

인터페이스 구현체를 만들어서 빈으로 등록해준다.

3. 설정 파일

XML이나 자바 설정 파일에 직접 등록할 수 있다.

어떻게 꺼내쓰지?

  • @Autowired 또는 @Inject
  • ApplicationContext에서 getBean()으로 직접 꺼내쓰기

특징

  • 오로지 “빈”들만 의존성 주입을 해준다.
profile
Anything

0개의 댓글