[Spring]스프링 빈과 의존관계

정연진·2022년 1월 6일
0
post-thumbnail

인프런 김영한님의 강의 "코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술"을 듣고 작성하였습니다.

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

컴포넌트 스캔 원리

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

@Controller 컨트롤러가 스프링 빈으로 자동 등록되는 이유도 컴포넌트 스캔 때문이다 (@Controller안에 @Component 있음)

@Component 를 포함하는 다음 애노테이션도 스프링 빈으로 자동 등록된다.

  • @Controller
  • @Service
  • @Repository

자동 의존관계 설정

생성자에 @Autowired 가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다.
이렇게 객체 의존관계를 외부에서 넣어주는 것을 DI (Dependency Injection), 의존성 주입이라 한다.
@Autowired에 의해 스프링이 주입해준다.
객체 생성 시점에 스프링 컨테이너에서 해당 스프링 빈을 찾아서
주입한다

결과


controller와 service, repository가 각각 있다.
각각 @Controller, @Service, @Repository 어노테이션이 붙어있어서 스프링 컨테이너에 빈으로 담겨진다.
controller 객체가 생성 될 때 스프링 컨테이너에 있는 관련(@Autowired 되어있는) service 객체를 넣어준다.
또 service객체가 생성 될 때에는 repository가 필요하구나! -> 스프링 컨테이너에 있는 repository를 넣어준다

참고: 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다(유일하게 하나만
등록해서 공유한다) 따라서 같은 스프링 빈이면 모두 같은 인스턴스다. 설정으로 싱글톤이 아니게 설정할 수
있지만, 특별한 경우를 제외하면 대부분 싱글톤을 사용한다.

profile
열공해욧

0개의 댓글