스프링빈과 의존관계 - 자바코드로 직접 스프링 빈 등록하기
기존에 컴포넌트 스캔을 한곳에 모아서 스프링빈을 등록하고 관리하는 방식으로 바꿔보겠습니다.
먼저 MemberController를 제외한 나머지 repository와 service의 어노테이션을 모두 지워줍니다
그리고 Controller 패키지와 같은 위계에 SpringConfig라는 java class를 만들어줍니다. 그리고 아래와 같이 @Configuration과 @Bean을 통해서 스프링빈에 등록해줍니다. 그러면 각각의 스프링빈도 생성되고 MemberServices에 memberRepository도 넣어줍니다.
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
컴포넌트스캔과 설정파일을 통해 등록하는 방식은 각각 장단점이 있습니다. 만약 후에 구조가 변경될 가능성이 있다면(DB교체로 repository교체 등등) 설정파일을 이용하는 것이 관리에 편합니다.