반응형

국비 학원에서 급급하게 팀 프로젝트를 진행해서 Spring의 개념적 이해보단 

이렇게 하니 저렇게 하니 이렇게 동작되더라 정도로 알고 있어  

어느 정도 환경설정이 세팅된 환경 속에서 페이지를 매핑하고

톰캣을 이용해 확인하고 어찌어찌 배포까지는 해서 작업물을 만들었었는데 

이 경험이 실무에서 적용되기 위해서는 스스로 더 공부를 해야겠다는 생각에 이곳저곳 돌아다니며 

습득한 내용을 적어 놓으려고 한다. 

 

실제로 이렇게 기록을 해놓으니 기억이 지워져도 

이 부분에 대해 기록해놓은 거 같다는 어렴풋한 생각 덕에 쉽게 다시 복습했던 기억에 다시 시작해보려 한다. 


1. IoC ( inversion of control) 

제어의 역전 이 말만 보았을 때는 정확히 무슨의미 인지 모르겠다. 

아무튼 역사를 보면 자바 기반의 어플리케이션이 개발되던 초기에는 자바 객체를 생성하고 객체 간의 의존관계를 연결하는 등의 

제어권을 개발자가 직접 가지고 있었다고 한다. 그러나 서블릿, EJB가 등장하면서 개발자가 독점적으로 가지고 있던 제어권이 서블릿과 

EJB가 등장하면서 개발자가 독점적으로 가지고 있던 제어권이 서블릿과 EJB를 관리하는 외부의 컨테이너로 넘어갔고 객체의 생성부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀐 것을 IoC, 제어의 역전이라 하는 것이다. 

 

스프링의 중요한 핵심중 하나인 IoC에 대해 알기 전에 자바관련해서 몇 가지 짚고 넘어가야 한다. 

 

Class - 설계도

Object - 실체화가 가능한 것 

Instance - 실체화가 된 것.

 

예를들어

리그 오브 레전드에는 누누라는 캐릭터가 있고 랭크 게임이든 일반 게임이든

큐를 잡고 들어간 게임에서 존재할 수 있는 즉, 실체화가 가능한 것을 Object라고 한다다. 

그리고 내가 실제로 누누를 플레이하게 된다면 누누는 실체화된 instance가 되고 

누누는 heap memory에 올라가게 된다. 

 

그런데 내 친구도 누누를 플레이하려고 한다. 

그리고 내 친구는 내가 누누를 플레이하는지 모른다. 

그래서 친구 역시 누누를 플레이할 때 누누가 instance가 되고

이 역시 heap memory에 들어가게 된다. 

 

heap memory에 같은 누누가 두 개가 들어가게 되면 이는 비효율적일 거라 생각이 든다.

그래서 내가 친구에게 누누를 하고 있다고 말해주어 생성된 인스턴스를 넘겨주고 싶지만

이를 프로그래밍으로 해결하기에는 꽤나 복잡하고 어려운 작업이라고 한다. 

 

그래서 Spring에서 이를 해결해준다.

Spring이 instance 가능한 객체를 읽어와 heapmemory에 올려주고 이를 사용하게 되는 것.

다시 챔피언으로 돌아와 누누 더 나아가 모든 챔피언에 객체에 대해 heap memory로 올려준다. 

이렇게 한 번만 객체를 생성해서 사용하기 편리하게 도움을 주는 것.

 

 

2. DI (Dependency Injection)

의존성 주입

 

예를 들어 이전에는 생성한 객체에 대한 주소를 내가 관리를 했다면

이제는 내가 아닌 Spring이 객체들을 메모리에 적재시키고 ( 제어의 역전 )

Spring에서 내가 원하는 모든 곳 클래스의 메서드에서 가져와서 사용이 가능해진다. 

 

이를 싱글톤이라고 하며 사용되는 곳에 인스턴스를 DI 주입해주는 것.

 

 

 

 

 

 

 

 

 

 

참고 url :

https://gangnam-americano.tistory.com/60

 

[Spring] Spring IoC와 DI

[Spring] Spring IoC와 DI 1. IoC(Inversion of Control)이란? IoC란 Inversion of Control의 약자로 해석하자면 제어의 역전이다. 제어의 역전, 온통 한문이라 뜻이 와닿지 않는다. 그래도 해석하자면 제어, 즉..

gangnam-americano.tistory.com

https://www.youtube.com/watch?v=mAFLNA9MYg8&list=PL93mKxaRDidG_OIfRQ4nztPQ13y74lCYg&index=2 

 

반응형

+ Recent posts