우리가 일상생활에서 가장 많이 쓰는 휴대기기인 스마트폰.
이 스마트폰의 배터리는 분리형과 일체형으로 나눌 수 있다.
지금은 일체형이 훨씬 더 보편적인 반면 과거에는 분리형이 압도적으로 많았다.
그때는 분리형이었기 때문에 배터리에 문제가 생기면 그 고장 난 배터리만
새 배터리로 갈아끼우면 해결 됐다.
반면 요즘 쓰는 일체형 스마트폰 같은 경우 배터리가 고장 나면 사실상 액정부터 해서 다 바꿔야 한다.
왜냐면 일체형이라는 것은 결국 한몸이라는 뜻이고 분리할 수 없는 사이를 의미하기 때문이다.
이를 조금 유식한 말로 결합력이 높다고 할 수도 있다.
물론 요즘 배터리가 좋아져서 고장도 거의 안나고 어쩌다 고장 나도 스마트폰을 금방 교체하는 추세이기 때문에
괜찮지만, 잦은 변경 및 업데이트가 일어나는 개발 세계에서는 어떤 프로그램이 일체형이라서
뭐 하나 고치려면 싹 뜯어서 엎어야 한다는 건 용납될 수 없는 말일 것이다.
그래서 개발자들이 머리를 굴려서 가져온 방법이 최대한 분리형 배터리처럼 결합력을 낮추는 작전이었다.
바로 이 개념이 스프링의 DI를 이해하는데 아주 중요한 개념이 된다.
Dependency Injection을 뜻하는 DI 또한 부품을 유연성 있게 필요에 따라서 뗐다 붙였다 하면서
고장 났을 때나 뭔가 바꿔야 할 때 그것만 갈아 끼우면 되는 장점 즉, 유지보수의 용이성을 높인 개념이다.
그러면 자바의 OOP(객체지향)와 무슨 차이인가? 하시는 분들도 계실 것이다.
자바는 클래스가 있고 객체가 있다. 아무리 OOP를 활용하여 한 클래스에서 외부 클래스들을 호출하고
선언한 객체와 메소드를 당겨와도 그 객체의 생성과 흐름 즉, Life Cycle(생명주기) 은 모두 작업자에 의해 결정되고
클래스 내부에서 일어난다.
하지만 스프링에서는 이 제어권을 스프링한테 맡겨 놓는 것이다.
한마디로 커피샵 주인이 매니저 한명을 고용해서 대신 운영하게끔 하는 것이다. (짬 때리는 것)
이렇게 제어권이 넘어간 것을 제어의 역전, 즉, IOC (Inversion of Control)라고 한다.
이 IOC개념을 탑재한 컨테이너가 스프링의 IOC 컨테이너가 되는 것이고 이 IOC 컨테이너를 통해 DI가 일어나게 된다.
그럼 DI가 뭔지는 알겠으나 그거 어떻게 일어나는 건데?라고 궁금해 할 수 있다.
그것은 XML 설정파일을 만들고 Bean을 그 안에 생성해줌으로써 외부에서 제어의 흐름을 관리하는 것인데 자세하고 구체적인 것은 다음 DI 사용법에서 다루기로 하겠다.
'개발자 전향 프로젝트' 카테고리의 다른 글
[Spring Boot] 윈도우 명령프롬프트(cmd)로 스프링 부트 실행하기! (0) | 2022.04.02 |
---|---|
[Java] 상속이란? + Interface가 뭐고 그거 왜 쓰는건데? (0) | 2022.03.19 |
[JAVA] 선언되는 위치에 따라 달라지는 변수의 타입 (CV,IV,LV) (0) | 2022.03.19 |
[JavaScript] 콜백함수 (CallBack)가 도대체 뭐길래? (0) | 2022.02.27 |
[JavaScript] 코드 인터프리터 작동 원리 및 순서 ( 비동기 vs 동기) (0) | 2022.02.18 |