Member를 생성하는 MemberService 가 있고 이를 구현하는 구현체 MemberServiceImpl 이 있습니다.
Member를 DB에 저장하는 MemberRepository가 있고 이를 구현하는 구현체 MemberRepositoryImpl 이 있습니다.
이 때,
MemberService는 MemberRepository를 의존하고 있습니다.
MemberRepositoryImpl 를 사용하기 위해서는 이렇게 new로 생성하게 됩니다.
그런데 먄약, MemberRepositoryImpl 가 아니고, 다른 MemberRepositoryImpl2 를 사용하게 된다고 합시다.
그러면 우린 MemberServiceImpl에 있는 코드를
이렇게 바꾸게 될 것입니다.
이것은 구현체에서 직접 수정하는 것으로 좋은 객체 지향 설계를 위반하게 됩니다.
new는 이제 버려줍니다.
생성자를 만들어 줍니다.
AppConfig를 만들고
@Configuration 애노테이션을 사용해 이것이 설정파일임을 알려줍니다.
아까 만든 생성자에 주입하기 위한 메소드를 만들어 줍니다.
@Bean 으로 등록해줍니다.
이 때, return 에는 Impl를 사용할지 Impl2를 사용할지
여기서 직접 변경해주면 됩니다.
사용 방법입니다.
ApplicationContext로 AnnotationConfigApplicationContext를 생성해줍니다. 이 때, 설정파일인 AppConfig.class로 만들어줍니다.
그리고 getBean을 통해 가져오게 됩니다.
첫 번째 인자로는 이름을 두 번째 인자로는 타입을 가져오게 됩니다.
첫 번째 인자인 이름은 기본적으로 메소드의 이름이 됩니다.
'Back-End > Spring(Boot)' 카테고리의 다른 글
스프링부트 Mybatis boot-starter로 Mysql 연동하기 (0) | 2021.07.09 |
---|---|
Intellij - 롬북(lombok) 사용을 위한 설정 (0) | 2021.06.24 |
스프링 Cookie (0) | 2021.03.06 |
스프링 ApplicationScope 빈주입 (0) | 2021.03.06 |
스프링 Application Scope (0) | 2021.03.06 |