[Java] 내가 이해한 제어의 역전(Inversion of Control)

Date:     Last Updated:

축약해서 설명해보자.

  • 앞의 의존성 주입도 그렇고 뭔가 장황하게 설명 늘어놔봐야 이해를 한건지 안한건지 더 모르겠다.
  • 그냥 축약해서 설명해보자.

제어의 역전이 뭘까?(Inversion of Control)

  • 학원에서 Spring 수업 듣는데 중간 중간 강사님이 이게 제어의 역전입니다! 라고 말하는데 이해가 안갔다.(당연한건가?)
  • 난 이해가 안가면 여러번 들어서 이해하는 스타일이다. 강사님이 계속 말하니 그냥 계속 들었다. 다만 그냥 들은 건 아니고 제어의 역전이라고 말할때마다
  • 그때 적은 코드와 상황을 이해하려고 노력했다.

내가 이해한 제어의 역전

  • 계속해서 듣다보니 한가지가 동일하다고 느꼈다. A,B,C,D 클래스가 있다고 할때 A를 사용하기 위해서는 BCD클래스가 필요하다. 이 상황에서 원래라면
  • A,B,C,D 클래스를 프로그래머가 만들고 A를 사용할 때도 프로그래머가 직접 적어주거나 new를 해서 사용했는데 Spring에서는 컨테이너가 A를 사용하기 때문에
  • 프로그래머는 BCD를 잘 만들어 놓기만 하면 됐다. 이게 내가 이해한 제어의 역전이다. 결과적으로 프로그래머가 변수나 메서드를 사용하지 않고
  • Spring이 알아서 사용할테니까 프로그래머는 잘 만들어놓고 mapping만 잘 시켜놓으면 되는 것이었다.

뭔가 좋아보이면서 싫은 그런 느낌?

  • Spring 컨테이너가 알아서 사용해주고 메모리 관리도(이건 jvm이 하겠지만) 해주고 하니까 프로그램 코드 작성도 쉽겠고 오류가 발생할 확률도 조금 낮아지겠지.
  • 만 개발자로서 뭔가 참 오묘하다. 그냥 틀만 제공해주면 알아서 만들어서 사용한다고 하니 참 내가 프로그램을 만드는 느낌이 안들기도 한다.
  • 그래도 잘 배워두자. 아무리 Spring이 대단한 프로그램이라고 해봐야 결국 개발자가 없으면 안돌아가니까.


Leave a comment