@Configuration
public class SpringConfig {
private DataSource dataSource;
@Autowired
public SpringConfig(DataSource dataSource) {
this.dataSource=dataSource;
}
@Bean
public MemberService memberService(){
return new MemberService(memberRepository());//스프링 빈에 등록되어 있는 memberRepository를 MemberService에 넣어준다.
}
@Bean
public MemberRepository memberRepository() {//인터페이스는 new 안됨
// return new MemoryMemberRepository();
return new JdbcMemberRepository(dataSource);
}
}
memberService는 MemberRespository와 의존관계이고, MemberRepository는 2개의 구현체를 가진다.
기존의 메모리와 연결을 끊고 jdbc 레포지토리와 연결
개방-폐쇄 원칙(OCP, Open-Closed Principle)
확장에는 열려있고 수정, 변경에는 닫혀있다.
-> 메모리 레포지토리에서 jdbc 레포지토리로 변경하는 과정