[Spring] 스프링 빈 의존관계 설정하기 (컴포넌트 스캔, 자바 코드)

hamsang·2022년 7월 26일
0

Spring

목록 보기
11/12

이전 글 - 스프링 빈, 컨테이너

스프링 빈 등록방식

  • 컴포넌트 스캔
  • Java 코드로 등록

🌱 컴포넌트 스캔 (Component Scan)

  • @Component 어노테이션이 있으면 스프링 빈으로 자동 등록된다.

📍 컴포넌트 스캔의 대상

@Component를 포함하는 어노테이션들 (스프링 빈으로 자동 등록됨)

  • @Controller
    스프링 MVC 컨트롤러로 인식된다.
  • @Repository
    스프링 데이터 접근 계층으로 인식하고 해당 계층에서 발생하는 예외는 모두 DataAccessException으로 변환한다.
  • @Service
    특별한 처리는 하지 않으나, 개발자들이 핵심 비즈니스 계층을 인식하는데 도움을 준다. (비즈니스 로직을 체계적으로 관리하는 계층)


🌱 Java 코드로 등록

Java 코드로도 빈을 등록할 수 있다.
클래스를 생성하여 @Configuration 어노테이션을 활용한다.

  • @Configuration
    스프링 설정 정보로 인식하고, 스프링 빈이 싱글톤을 유지하도록 추가 처리를 한다.
  • @Bean
    객체를 스프링 빈으로 등록해준다.

위의 코드는 생성자 주입 방식으로 DI를 구현하고 있다.

DI에는 필드 주입, setter 주입, 생성자 주입 이렇게 세 가지 방식이 있는데, 의존관계가 실행 중에 동적으로 변하는 경우는 사실상 거의 없기 때문에 생성자 주입을 적극적으로 권장한다.

사진과 같은 의존 관계를 형성하는 코드다.

@Configuration 어노테이션의 정보를 보면, @Component가 포함되어 있다는 사실을 알 수 있습니다. 따라서 컴포넌트 스캔 대상이 되어 자동 스캔을 통해 빈 등록이 가능합니다.


  • 컴포넌트 스캔 : 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드에 사용.
  • Java 코드로 등록 : 정형화 되지 않았거나, 상황에 따라 구현 클래스를 변경해야하는 상황

@Autowired 를 통한 DI는 스프링 빈으로 등록한 객체에서만 동작한다.

profile
햄생

0개의 댓글