인프런 김영한 선생님 스프링 입문 강의를 보고 정리한 내용입니다.
MemberRepository 인터페이스를 구현하는 MemoryMemberRepository와 JdbcMemberRepository가 있었다. 이때 MemoryMemberRepository를 빈으로 저장해 두었는데, 새로운 JdbcMemberRepository를 구현하면서 빈으로 등록하여 사용하고자 했다.
코드를 어떻게 작성해야 JdbcMemberRepository를 빈으로 생성하여 가져올 수 있을까?
방법은 매우 간단하다!
SpringConfig를 통해 MemoryMemberRepository를 빈으로 생성하고 있는 코드를,
위처럼 수정해 주면 된다. memberRepository()를 호출했을 때 JdbcMemberRepository를 반환하도록 하면 해당 레포지토리가 스프링 컨테이너에서 memberService와 의존 관계를 형성하게 된다.
그렇게 되면 스프링 컨테이너는 위처럼 구성된다.
이렇게 의존성 주입을 사용할 경우 개방-폐쇄 원칙(OCP) 지킬 수 있으며, 기존 코드 수정 없이 설정만으로 구현 클래스를 확장할 수 있다. 만약 다른 MemberRepository로 변경해야 할 경우 SpringConfig에서 주입해 주면 끝이다.
'Dev > Spring' 카테고리의 다른 글
[Spring] OCP, DIP를 위반하는 클라이언트 코드 고치기 (feat. DI) (0) | 2023.09.10 |
---|---|
[Spring] 스프링이란? (0) | 2023.09.03 |
[Spring] 스프링 빈과 의존관계 (0) | 2023.09.01 |
[Spring] @ResponseBody (0) | 2023.08.31 |
[Spring] Error creating bean with name 'dataSourceScriptDatabaseInitializer' (0) | 2023.07.24 |