[Spring] 스프링은 뭘까?
안녕하세요 코북입니다. 어제부터 스프링에 대해서 배우기 시작했는데요. 수업을 듣다보니 무지성으로 스프링을 사용하면 안될 것 같은 느낌이 들었습니다. 그래서 스프링 프레임워크란 무엇인지, 왜 사용하는 것인지를 머릿속에 정리하고 싶었습니다. 오늘은 먼저 스프링 프레임워크가 무엇인지 알아볼 생각입니다. 수업 때 배운 내용과 사전의 내용을 종합해서 정리한 스프링의 정의는 다음과 같다.
스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서간단히 스프링이라고 한다. 동적인 웹 사이트 개발을 위한 여러 가지 서비스를 제공한다. EJB 기반으로 개발을 하지 않고 POJO(Plain Old Java Object) 기반으로 개발을 하더라도 가볍고, 제어가 가능한 상호 관련이 적은, AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)를 지원하고, 컨테이너를 통해 라이프사이클을 관리하고, XML 기반으로 컴포넌트를 개발할 수 있도록 지원해주는 프레임워크를 말한다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준 프레임워크의 기반 기술로서 쓰이고 있다. 표준프레임워크포털에서 관리하고 있고, 오픈 소스이기 때문에 누구나 무료로 사용할 수 있다.
네... 따라 적었지만 무슨말인지 이해가 잘 되지 않는데. 아마 각각의 용어들에 대한 이해가 부족하기 때문인 것 같습니다. 각 용어들에 대한 공부가 필요할 것 같아요. '프레임워크, EJB, POJO, AOP, 컨테이너와 라이프사이클, XML' 에 대해 알아보겠습니다.
프레임워크는 소프트웨어 개발에서 설계와 구현을 재사용 가능하도록 하는 모듈이라고 볼 수 있다. 지원 프로그램, 컴파일러, 코드 라이브러리, 도구 세트, API 등과 같이 프로젝트나 솔루션 개발을 가능하게 하는 여러가지 서로 다른 컴포넌트들을 포함한다. 기반구조를 그대로 재사용하고 비즈니스 로직과 관련된 부분을 추가적으로 구현하면 되기 때문에 빠른 어플리케이션 구축이 가능하다. 프레임워크는 공통 부분들의 개발 시간을 줄이고 세부 요구사항 구현에 집중할 수 있도록 하는 것을 목표로 한다.
EJB는 클라이언트/서버 모델의 서버 부분에서 운영되는 자바 프로그램 컴포넌트들을 설정하기 위한 아키텍처와 이를 지원하는 자바 API를 말한다. 기업들에게 새로운 프로그램 컴포넌트가 추가되거나 또는 변경될 때마다 각 개별 컴퓨터를 갱신하지 않고서도 서버에서 변화를 통제할 수 있는 이점을 제공한다.
POJO는 Plain Old Java Object의 약어로 해석하면 오래된 방식의 간단한 자바 객체이다. JavaEE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임 워크에 종속된 무거운 객체를 만들게 된 것에 반발해서 사용하게 된 용어이다. 쉽게 말해서 Controller이다. FrontController의 할 일을 대신 해주는 역할을 한다.
AOP는 Aspect Oriented Programming으로 관점 지향 프로그래밍을 말한다. 횡단 관심사의 분리를 허용하고, 관점 지향 소프트웨어 개발의 기초를 형성하여 모듈화를 증가시키려한다.
컨테이너는 객체관리를 수행하는 그릇으로, 빈(객체)의 생명 주기를 관리하는 역할을 한다. 라이프 사이클은 여기서 말하는 생명주기인데, 한 객체가 생성되고 사용되고 삭제되는 일련의 주기를 말한다.
XML은 extesible markup language, 확장성 마크업 언어다. 웹 문서를 구조화 하는 사실상의 표준 형식으로 W3C가 제안하였다. 컴퓨터 환경에서 마크업 언어는 웹문서에 포함될 텍스트를 정의하는 어휘와 기호로 구성된다. 디지털 보존에 있어서 XML이 갖는 의미는 디지털 문서의 내용과 구조, 그리고 외관을 분리하기 때문에 디지털 정보의 결정적인 취약점인 운영 체제나 애플리케이션 소프트웨어 의존성을 극복할 수 있게 한다는 데 있다. 특정 하드웨어나 소프트웨어 없이 파일을 직접 XML로 변환시키거나 XML로 직접 파일을 생성할 수 있다.
다양한 용어들에 대해서 공부하니 조금 더 스프링에 대한 이해가 잘 되는 것 같습니다. 아직도 제대로 이해했다고는 생각되지 않지만, 앞으로 스프링을 사용하면서 그 의미를 잘 이해할 수 있을 것 같은 기분이 듭니다.
https://dict.naver.com/
https://ko.wikipedia.org/