[Spring] 스프링 프레임워크(Spring Framework)란?

2020. 12. 17. 16:47 Spring Framework/Spring 입문 - 개념 및 핵심


스프링 프레임워크(Spring Framework)란?


스프링 프레임워크는 자바 진영에서 주로 웹 서버 어플리케이션을 만들기 위해 사용하는 프레임워크입니다. 


스프링 프레임워크를 설명하기에 앞서 먼저 프레임워크가 무엇인지 알아보도록 하겠습니다.


프레임워크(Framework) 


프레임워크 개발자들이 생산하는 코드 품질 및 개발 속도를 상향 평준화시키기 위해 고안된 규약이자 표준 개발 방법을 제공해주는 어플리케이션입니다.


소프트웨어 개발자들은 이 글을 보고 계시는 여러분도 아시다시피 경력, 재능 그리고 개발자가 가지고 있는 관련 지식에 따라서 급(?)이 많이 나뉘어집니다.


경험 많은 시니어 개발자들과 주니어 개발자들의 차이는 더 어마어마한데요. 이 부분의 간극을 어떤 규약을 지키면서 프로그램을 개발하는 것으로 어느정도 메우자! 라고 해서 등장한게 프레임워크입니다. 프레임워크를 이용하여 어느정도 예측된 코드 품질과 개발 속도를 맞출 수 있게끔 만든 것이죠. 


쉽게 생각하면 일종의 공정이라고 생각하시면 됩니다. 공장에서 어떤 제품을 생산할 때 공정을 지키면서 물건을 생산하면 예상된 시간과 품질이 보장되는 것처럼 말이죠.  


<공정의 한 모습>


요약하자면 스프링 프레임워크는 자바 언어를 표준을 지키면서 주로 웹 개발을 하게끔 지원하는 어플리케이션이라고 할 수 있겠습니다!


| 스프링에서 제공하는 개발 방법


스프링에서 제공하는 개발방법은 크게 두 가지입니다.


DI(Dependency Injection) - 의존성주입

AOP(Aspect-Oriented Programming) - 관심지향 프로그래밍


처음에 저도 이 두 개념을 배울 때 무슨 소리인지 감조차 안 잡혔는데요. 어렵사리 개념을 어느정도 이해하고 나서 왜 그런가 생각을 해봤더니 디자인 패턴에 대한 내용이 녹아들어있는 개념이었기 때문이었습니다. ( 그때는 자바 언어만 끄적이던 초보 중에서도 상 초보였으니까요ㅠ )


어쨌거나 뭔가 유용하니까 저 두 방법론을 들고 나온 거겠죠? 이해하기 어렵겠지만 저게 무엇인지 간략하게 이야기 하겠습니다. 


DI : 객체에 속성값을 주입하는 방식으로, 모듈간의 결합도를 낮추어 유연한 코드를 작성하게 해주는 역할을 함


AOP :  프로그램 로직 중에 반복되는 코드를 횡으로 분리하여 중복된 코드를 줄여주고 핵심 로직에 대한 가독성을 높이는 역할을함


여기서는 스프링에서는 DI, AOP가 주 개발 방법론이고 이건 유용한 방법론이니까 쓰이겠지? 라고 넘어가시면 될 것 같습니다. 


| 마치며 


스프링은 다른 스크립트언어(Python, Javascript, Ruby 등등)로 짜여진 프레임워크들보다 배우기가 좀 어렵고 개발하기에 시간이 조금 오래걸릴 수 있습니다. 하지만 JVM위에서 가동되는 자바 언어와 그에 수반되는 풍부한 라이브러리, 다른 스크립트 기반 프레임워크에 비하여 견고함 등등 여러 장점이 있습니다. 또한 우리나라에서 가장 많이 쓰이는 프레임워크 중 하나기 때문에 익혀두시면 좋은 프레임워크 중 하나라고 생각합니다.



출처: https://engkimbs.tistory.com/601?category=767795 [새로비]