[spring JPA 기본]_컴포넌트 스캔과 자동 의존관계

youuu·2022년 11월 19일
0

Study

목록 보기
11/11

스프링 빈과 의존관계

  • 컴포넌트 스캔과 자동 의존관계 설정
  • 자바 코드로 직접 스프링 빈 등록하기

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

회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비하자.

스프링 빈을 등록하는 2가지 방법

  • 컴포넌트 스캔과 자동 의존관계 설정
  • 자바 코드로 직접 스프링 빈 등록하기

컴포넌트 스캔 원리

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

  • @Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 때문이다.

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

    • @Controller
    • @Service
    • @Repository

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

Q. 아무데나 컴포넌트 스캔이 있어도 되나요??
-> 안됨.

각각 @Controller @Service @Repository를 걸어주기.

Service에서 @Autowired가 있으면 MemberRepository가 필요하구나 하고 찾아준다.

@Autowired
    public MemberService(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }
profile
공부중인 주니어 개발자

0개의 댓글