Android Studio/ReviewMate
컴포넌트 스캔과 자동 의존관계 설정(+ 스프링 빈 등록)
kangchaewon
2024. 1. 9. 16:36
@Controller: 스프링 컨테이너가 controller생성하여 관리해준다.

@Autowired를 사용하면 컨테이너가 자동으로 memberservice를 생성해서 관리해준다.
but 빨간줄이 뜨고, 오류가 나는 이유는?

-> memberService 클래스는 순수한 자바 코드 -> spring이 알 방법이 없음 -> @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