관심쟁이 영호

[Spring Boot 기초] ㅣ Frame Work, IoC 컨테이너 본문

Bank-End/Spring Boot

[Spring Boot 기초] ㅣ Frame Work, IoC 컨테이너

관심쟁이 영호 2021. 4. 1. 19:39
반응형

 

 

1. Frame Work?

스프링은 프레임 워크라는 말이 있다.

그럼 여기서 프레임 워크란 무엇인가?

 

Frame(틀) + Work(일)이다.

어떠한 프로젝트를 할 때, 하나의 틀을 만들어놓고 그 틀을 벗어나지 않게 프로젝트를 진행하라는 의미에서 프레임워크를 만들었다.

 

2. Frame Work가 왜 필요한가?

대학교 수준이나, 개인 프로젝트 수준에서는 많이 필요없을 수가 있다.

하지만 실무에 나가면 프레임워크가 엄청나게 필요하다.

 

이유는, 무수히 많은 코드들이 있고

각 코드들이 맡은 역할이 다르기 때문이다.

 

내 옆사람이 짜놓은 코드를 참고하여 코드를 작성해야 하는 경우도 아주 많고,

내 코드를 다른 누군가가 볼 경우도 아주 많다.

아니다. 그냥 무조건 봐야한다.

 

옆사람이 코드를 작성해놓았는데, 코드를 너무 복잡하게 작성하여 어느 부분이 어떤 기능을 가지고 있는지 알아보기가 상당히 힘들다.

프로젝트를 진행하거나, 유지보수를 계속해야하는 입장에서는 계속 그 코드를 누군가가 봐야하고

코드를 파악하는데 몇달몇일이나, 못 알아볼 수도 있다.

이럴 경우에는 엄청나게 생산성이 떨어진다고 볼 수 있다.

 

그럼 여기서 어느 부분은 어떠하게 코드를 작성하자는 규약을 맺고 다같이 그 규약을 지키면서 코드를 작성하면, 세부적인 부분은 다르더라도 이 부분은 DB처리, 비즈니스 로직 등등을 알아볼 수 있을 것이다.

 

그래서 프레임 워크가 나왔다.

 

3. 그럼 왜 스프링인가?

일단 스프링은 오픈소스이다. 다시 말해, 공짜다.

그래서 내부를 고쳐서 자신에게 맞게 커스텀해서 사용할 수 있다.

 

3. IOC 컨테이너?

스프링을 쓰는 이유이다. 프레임 워크도 아주 많은 종류가 있다. 근데 굳이 왜 스프링을 사용하는가???

바로 IOC 컨테이너 때문이다.

 

IOC 컨테이너는 Inversior of Control(제어 역흐름)의 약자이다.

일반적으로 우리가 자바를 이용해서 코드를 작성한다고 할 때,

 

어떠한 객체를 메서드 안에서 new연산으로 생성한다고 생각해보자.

그러면 메모리에 해당 객체가 생성될 것이다.

 

근데 여기서 메서드를 벗어나면 매서드에서 생성한 객체에 접근할 수 없다.

return으로 객체를 돌려받아서 연달아 사용하거나, 파라미터로 넘겨서 사용해야한다.

이런 경우에는 공유하기가 정말 힘들다.

 

이 불편함을 없애기 위해서 스프링에서 IOC컨테이너를 제공한다. 개꿀이자나?

스프링은 내가 만들어 놓은 객체들을 보관하고 있는다.

모든 객체를 가지고 있는게 아니다. 어노테이션을 통해서 스프링에게 "이 객체는 니가 보관해!"라고 알려주면 IOC 컨테이너에 보관하게 된다.

 

 

 

 

 

300x250
Comments