어떤 서비스를 개발하고자 할때 서비스 , 컨트롤러 , 맵퍼 등으로 패턴을 만들어 개발하게 되는데
이때 각 기능을 담당하는 bean을 사용한다.
그런데 만약 조금 기능이 달라진다거나 bean을 바꿔야 할 경우가 생긴다면 코드를 다시 만들어야 할까?
가급적이라면 코드는 건드리지 않고 AppConfig에서 객체를 컨르롤 하도록 만드는것이 좋고
이를 의존성 주입 이라고 한다.
기본적으로
VO를 만들고 Service(인터페이스)를 만든뒤 이를 구현한 Impl(구현체)를 만들어 이 Impl을 생성하여 객체를 실행하게 된다.
이때
Impl(구현)은 Interface(역활)에 1:1 대응하는 관계가 되는데
Impl구현 과정에서 다른 구현체를 필요로 할경우 즉 Impl안에서 다른 구현체를 필요로 할경우 Impl안에서 객체를 생성하여 사용한다.
하지만 그럼 유지보수가 점점 힘들어지기 때문에 이를 AppConfig에서 모든 구현체들을 관리해 주도록 한다.
1.Impl에서 구현에 필요한 다른 객체의 이름과 공간을 선언해 둔다.
2.그 객체를 할당해주기 위해 Impl에 "생성자"를 만들어 둔다.
3.2에서 만든 생성자는 매개변수로 역활(인터페이스) 타입을 받는다.
4.2에서 만든 생성자는 AppConfig에서 메소드 형태로 구현한다.
5.AppConfig를 실제 사용처에 생성해서 메소드를 호출하는 방식으로 Impl에 구현체를 받아온다.
'SpringBoot' 카테고리의 다른 글
10월 16일 SpringBoot DI를 스프링으로 만족하기 (0) | 2022.10.17 |
---|---|
10월 13일 Spring Boot 자바에서 Bean을 생성 DI를 만족시키기 (0) | 2022.10.14 |
10월 10일 Spring Boot AppConfig 설명 (2) | 2022.10.10 |
10월8일 Spring Boot AppConfig 구조 (0) | 2022.10.09 |
10월 6일 Spring Boot DIP와 생성자 주입 (0) | 2022.10.07 |