본문 바로가기
JavaScript/Spring

[Spring framework] 스프링 프레임워크 특징

by Alkaloid 2022. 1. 17.
반응형
반응형

저번에 알아보았던 프레임워크를 좀더 자세하게 알아보려고 합니다.

프레임워크의 특징을 다시한번 말을 해보면 [Ioc와 AOP를 지원하는 경량의 컨테이너 프레임워크]입니다.

 

그럼 저말을 하나하나 살펴 볼게요.

 

ioc(inversion of control) : 제어의 역전으로, 애플리케이션을 구성하는 객체간의 느슨한 결합(낮은 결합도)!을 유지합니다.

좀더 쉽게 이야기 해볼께요.

 

자바에서 객체를 생성할때 new라는 키워드를 사용하여 객체를 생성합니다. 그리고 의존 관계를 개발자가 직접 처리했죠.

A a = new A();

A b = new A();

위처럼 말이죠. 위는 동일한 인스턴스를 가르키고 있습니다.

 

하지만 변수명만 다른거죠. 이런식으로 객체를 생성(new)하고 의존관계를 정의 했습니다.

이럴때는 의존관계에 있는 객체를 변경시키려면 반드시 자바코드를 수정해야 합니다.

 

하지만, ioc를 이용하면 자바 코드를 통해 수정하는것이 아닌 컨테이너라는 애가 대신 처리를 하게 됩니다. 즉 생성과 관계를 컨테이너가 알아서 합니다. 이럴 경우 코드를 손대지 않기 때문에 유지보수가 편해 집니다.

 

 

 

aop (aspect oriented programming): 로직을 분리하는 것을 말합니다. 개발을 하다보면 다른 메소드지만 반복되는 공통 로직이 존재합니다. 무슨말인지 아~주 쉽게 이야기 해보겠습니다.

 

앱과 웹 모두가 마찬가지입니다. 은행어플 혹은 은행사이트를 만든다고 가정을 했을때, 크게 [로그인][계좌이체][입출금][대출]등 다양한 카테고리(비즈니스 로직)이 나오겠죠? 거기에 공통적으로 들어갈 공통로직은 뭐가 있을까요?

여러가지 존재 할 수 있겠지만, 가장 필요한 [보안][트랜잭션]등이 존재할수 있습니다.

로그인할때마다, 계좌이체 할때마다 보안 로직을 따로 짜는거보다. 한번에 짜서 해당 로직을 다른 로직에서 가져다 쓰면 유지보수뿐만 아니라 응집도가 높은 비즈니스 컴포넌트를 만들수 있습니다.

 

우리는 이러한 공통 로직을 [횡단 관심사]라고 부르려 합니다.

 

 

경량의 : 경량은 가볍다는 뜻입니다. 하지만 스프링 자체가 다른 프레임워크에 비해 용량이 작다거나 그런 뜻은 아닙니다.

아래를 보시면 스프링 자체는 여러 모듈로 나누어져 있습니다.

 여기에 각 모듈은 하나의 jar파일로 구성되어 있고, 그 몇개의 jar파일만 있으면 개발 환경과 실행이 가능해 집니다. 그렇기 때문에 배포가 빠르다는 장점이 존재합니다. (jar파일을 보고 싶으신 분들은 위 그림에서 Maven Dependencies 파일을 열어보시면 나옵니다.)

또한 pojo형태의 객체를 관리 하기 때문에 가볍다고 말을 하는것입니다.

pojo는 설명이 길어질수 있어 다음에 다시 언급해 드리겠습니다.

 

 

 

컨테이너: 아까 위 ioc에서 컨테이너가 객체를 생성하고 의존관계를 주입한다고 배웠습니다. 컨테이너는 서버안에 포함되어 배포 및 구동이 됩니다. 객체 운용에 필요한 다양한 기능을 하고, servlet을 관리하는 servlert컨테이너 ejb를 관리하는 ejb컨테이너가 있습니다.

servlet컨테이너는 톰캣서버에도 포함이 되어 있습니다. (ejb라는 것도 나중 POJO를 할때 다시한번 다루겠습니다.)

 

이렇게 프레임워크에 대해 알아보았습니다.

반응형