Java/공부
Dependency Injection
mommos
2025. 3. 24. 21:34
Dependency Injection (DI)
어떤 객체가 자신의 의존 객체를 직접 생성하지 않고 외부로부터 주입받는 설계 방식중 하나이다.
MemberService memberService = new MemberService(new MemberRepository());
이렇게 직접 생성하는 것이 아니라 아래처럼 외부 (AppConfig 나 Spring Container) 에서 주입받는다
@Bean
public MemberService memberService(){
return new MemberService(memberRepository());
}
위와 같은 방식으로 코드를 설계하면 몇가지 장점이 있다
객체 간 결합도 낮춤, 유지보수 쉬움, 테스트하기 쉬운 구조 설계 가능
개발을 할때 DB가 계속해서 바뀐다면 DB를 사용하는 곳 마다 하나하나 로직을 바꿔주어야 한다
@Bean
public MemberRepository memberRepository() {
// return new MemoryMemberRepository();
return new JpaMemberRepository(em);
}
예를들면 이런식
하지만 DI를 사용하면 사용하는 파일마다 바꿔주지 않아도 한개의 파일만 들어가서 바꿔주면 된다.
사용하는 방법은 AppConfig 파일을 생성한 뒤
@Configuration
어노테이션을 붙여 한곳에서 관리하는 식이다