Spring

[Spring] 스프링 입문 - 섹션 4. 스프링 빈과 의존관계

Younghun 2022. 10. 8. 19:49

컴포넌트 스캔과 자동의존관계 설정

컨트롤러가 서비스를 new로 생성하게 되면 불필요하게 중복되는 객체들이 생기게 된다. 하나의 객체만 생성하고 여러 컨트롤러가 공유하면서 사용하기 위해 DI(의존성 주입)을 사용한다. 이렇게 스프링 컨테이너에서 관리하는 객체는 스프링 빈이라고 불린다. 스프링 빈은 기본적으로 싱글톤으로 하나의 객체를 공유하는 방식으로 사용된다.

 

우선 이전에 만든 서비스와 리포지토리는 순수한 자바 코드이기 때문에 스프링이 인식할 수 없다.

그래서 @Service와 @Repository를 사용해 스프링에게 알려준다.

 

그리고 MeberController에 @Autowired를 사용해 연결시켜주면 된다.

이렇게 @를 활용해 의존관계를 만드는 것을 컴포넌트 스캔이라고 한다.


자바 코드로 직접 스프링 빈 등록하기

기존에 사용한 @Service, @Repository는 지워준다.

그리고 service 패키지에 SpringConfig 클래스를 생성하고 거기에 @Bean을 이용해서 직접 등록해준다.

 

이러한 방식의 DI를 생성자 주입이라고 한다. 그 외에 더 자세한 내용은 필요할 때 찾아보면 될 것 같다.

직접 스프링 빈으로 등록하는 방식은 상황에 따라 구현 클래스를 변경해야 하는 경우에 쓰인다. 현재 실습 시나리오처럼 DB가 아직 정해지지 않은 경우가 이에 해당한다.