이전 시간에는 컴포넌트 스캔을 통해서 스프링 빈을 등록하는 방법을 알아보았다. 이번에는 스프링 빈을 등록하는 코드를 직접 추가하는 방법을 알아보도록 할 것이다.
우선 MemberService
에 대한 애노테이션들을 삭제해 준다. (@Service
, @Autowired
, @Repository
/@Controller
는 제외)
그리고 service패키지 내에 SpringConfig라는 자바클래스를 작성한다.
@Configuration
public class SpringConfig {
@Bean //빈을 등록하겠다는 의미
public MemberService memberService () {
return new MemberService(memberRepository());
} //생성자 매개변수에 memberRepository가 필요하므로 아래에 또 빈으로 등록해줌
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
//인터페이스는 new가 안되기때문에 구현체로 new
}
}
이렇게 하면 MemberService와 MemberRepository 가 스프링 빈으로 등록이 된다.
실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용한다.
그리고 정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록한다.