-
DI와 IOC컨테이너(1)WEB/Spring 2022. 11. 25. 18:47
엔터프라이즈 어플리케이션 만든다고 하면 기본적으로 사용하는Layer 가
용자의 요구에 맞는 서비스를 담당하고 있는 서비스 Layer
그 데이터 소스를 접근하는 방법 이라든지 구현 기술을 숨기고 단순하게
서비스 레이어에서 순수하게 자바 라고 하는 것만 이용해서 데이터를 제공할 수 있도록 해주는 그런 데이터 엑세스 오브젝트 DAO 계층이 있다.
업무 프로그램 이라고 하는 것은 수정 이라는 것이 항상 뒤따르게 되어 있다.
예를 들어 이제 B1에 알고리즘이 달라졌다거나 서비스 에 대한 내용이 달라져서 기본적으로 여기 있는 내용을 재수정 해야 한다고 하면은 내가 갖고있는 서비스를 바꾸기 위해서는 두가지 방법이 있을 것이다.
1. B1의 소스코드를 구해서 그 소스 코드를 수정한다2. 새로하나 만들어서 덮어쓰기 한다
B1을 수정하지 않고 B2를 덮어 쓰게되면 Service가 수정이 되야 한다.
B2를 쓰기 위한 코드가 바뀌어야 되는 부분이 있게 된다.
지금 현재 B1 이라는 자료형으로 참조 하고 있는데 B2로 바꾸게 되면 결국 수정에 대한 범위가 바뀌었을 뿐1번 방식과 달라질 게 없다.
어플리케이션을 만들고 나서 운영하다가 수정을 하려고 하면 그 소스 코드를 구해서 재배포를 하게되면 위험성이 있다.
즉 결합력이 굉장히 높음
어떤식으로 해야 결합력을 좀 낮출 수 있을까?
우리가 사용하는 그자료형을 B1 또는 B2 이렇게 하지 않고 B라고 하는 녀석을 하나 만든다.
사용하는 서비스 자체가 달라진 것이 아니라 내부적인 코드가 달라진 것인터페이스 활용
서비스에서 사용하는 자료형 B 라고 하는 인터페이스 객체를 사용하고 그 인터페이스를 구현하고있는 객체라고 한다면
그 객체를 자유롭게 가져다 사용 할 수 있다.
인터페이스를 사용함으로 인해 결합력을 낮춘다.서비스 Layer에서는 객체를 직접 생성하지 않고
코드를 생성할 객체를 외부파일에 두고 위부 파일에 의해서 생성 될수 있게 해준다.
자료 출처:https://www.youtube.com/@newlec1/featured
뉴렉처
"유료" 온라인 강의 사이트 뉴렉처에서 제공하는 프로그래밍 강의 채널입니다. 교육서비스 : (10월 새롭게 오픈될 예정입니다.) https://www.newlecture.com 교재: https://javaweb.tistory.com https://answeris.tistory.
www.youtube.com
'WEB > Spring' 카테고리의 다른 글
XML을 이용한 쿼리 실행 (0) 2023.01.06 어노테이션을 이용한 객체 생성 (0) 2022.11.25 DI와 IOC컨테이너(3) (0) 2022.11.25 DI와 IOC컨테이너(2) XML을 이용한DI (0) 2022.11.25 스프링 생명 주기 (0) 2022.07.17