스프링의 의존성 주입 - 기초

728x90


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을 통해 가져오게 됩니다.

첫 번째 인자로는 이름을 두 번째 인자로는 타입을 가져오게 됩니다.

첫 번째 인자인 이름은 기본적으로 메소드의 이름이 됩니다.

반응형