오늘은 Spring의 도움을 받아서 객체를 생성하고 주입하는 과정을 해보기전에 Spring을 전혀 개입시키지 않고 직접 객체를 생성하고 주입해보자.
아래 그림의 서로 다른 출력결과는 Exam 객체의 시험 총점과 평균을 인라인 형식으로 출력하는 InlineExamConsole 클래스와 Exam 객체의 시험 총점과 평균을 그리드 형식으로 출력하는 GridExamConsole 클래스이다
InlineExamConsole이 exam 객체를 주입받아 인라인 형식으로 출력하고 있다가 나중에 GridExamConsole이 추가되었다고 가정해보자. 이 경우, 출력을 그리드 형식으로 바꾸기 위해서는 new GridExamConsole(exam)과 같은 코드 수정이 필요할 것이다.
ExamConsole console = new InlineExamConsole(exam);
↓
ExamConsole console = new GridExamConsole(exam);
코드 수정 없이 이것을 가능하게 하려면 어떻게 해야 할까? new GridExamConsole(exam)과 같은 객체 생성 코드를 외부 설정으로 분리해야 한다. 이를 통해 코드 수정 없이 설정만 변경함으로써 출력을 인라인에서 그리드로 바꿀 수 있게 되는 것이다.
따라서 new GridExamConsole(exam) 객체 생성을 코드 내에서 직접 하지 않고, 이를 대신해 줄 설정을 외부로 빼는 작업이 필요하다. 이 작업을 Spring 프레임워크가 대신해주는것이다.
스프링이 담당하게 하면, 소스 코드를 수정하지 않고도 InlineExamConsole과 GridExamConsole을 유연하게 교체할 수 있게 된다.
참고자료
[1] 유튜브 채널 뉴렉처 - 스프링 프레임워크 강의 5강 - Dependency를 직접 Injection하기
'🖥️ Backend > Spring' 카테고리의 다른 글
[Spring] 7.스프링 DI 지시서 작성하기(Spring Bean Configuration) (0) | 2024.10.20 |
---|---|
[Spring] 6.스프링 DI 설정을 위해 이클립스 플러그인 설치하기 (3) | 2024.10.20 |
[Spring] 4.IoC(Inversion Of Control) 컨테이너 (1) | 2024.10.02 |
[Spring] 3.DI(Dependency Injection) (0) | 2024.10.01 |
[Spring] 2.느슨한 결합력과 인터페이스 (0) | 2024.09.30 |