Android Studio/ReviewMate

컴포넌트 스캔과 자동 의존관계 설정(+ 스프링 빈 등록)

kangchaewon 2024. 1. 9. 16:36

@Controller: 스프링 컨테이너가 controller생성하여 관리해준다.

 

@Autowired를 사용하면 컨테이너가 자동으로 memberservice를 생성해서 관리해준다.

but 빨간줄이 뜨고, 오류가 나는 이유는?

-> memberService 클래스는 순수한 자바 코드 -> spring이 알 방법이 없음 -> @Service 어노테이션 사용!

 

Service에 Repository 주입
COntroller에 Service주입

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

1. 컴포넌트 스캔과 자동 의존관계 설정 -> 주로 이 방법 사용

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

 

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

  • @Component 어노테이션이 있으면 스프링 빈으로 자동 등록된다. 
  • @Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 떄문이다.
  • @Component 를 포함하는 다음 어노테이션도 스프링 빈으로 자동 등록된다.
    • @Comtroller
    • @Service
    • @Repositort

2. 자바 코드로 직접 스프링 빈 등록하기 -> 추후 설명

@Configuration
public class SpringConfig {

    @Bean
    public MemberService memberService() {
        return new MemberService(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository() {

        return new MemoryMemberRepository();
    }
}

 

장점: 데이터베이스 변경 시 config파일만 변경하면 된다.

 

참고

 

@SpringBootApplication하위 패키지에서만 @ 어노테이션을 사용할 수 있다. 

위의 경우만 컴포넌트 스캔의 대상이 된다.

 

 

 

 

-> Singeton