스프링(Spring) 프레임워크, MVC 개념 및 기본구조

안녕하세요! 이번 포스팅은 스프링 프레임워크 (Spring Framework)에 대해 간략하게 알아보고, MVC 개념과 기본구조에 대해 설명하겠습니다.

 

스프링 프레임워크를 얘기하기 전에 먼저 프레임워크부터 짚고 넘어가야 할텐데요

프레임워크는 뼈대나 근간을 이루는 코드들의 묶음이라고 할 수 있습니다. 프레임워크를 이용한다는 의미는 프로그램의 기본 흐름이나 구조를 정하며 모든 팀원들이 이 구조에 자신의 코드를 추가하는 방식으로 개발합니다.

 

프레임워크 최대의 장점은 개발에 필요한 구조를 이미 코드로 만들어 놓아서 실력이 부족한 개발자라도 개발이 가능하다는 점이 있겠습니다. 

 

스프링은 경량(Light-Weight) 프레임워크 입니다.

서버중심, Heavy weight, 확장성, 유지보수 등의 문제점을 클라이언트중심의 개발, Light Weight, 생산성, 안정성, 다양한 개발언어 등의 장점으로 바꾸어 놓았습니다.

 

* 경량 프레임워크(light-weight Framework) 정의

복잡한 Setting과 Hardware인 구성이 필요한 Framework의 반대되는 개념으로 등장했는데요, J2EE 기술은 너무 방대하고 복잡해서 전체를 이해하고 개발하기엔 어려운 점이 많았기에 특정 기능을 위주로 간단한 jar 파일 등을 이용해서 개발할 수 있게 구성된 Framework 입니다.

 

스프링이 다른 프레임워크와 다른 차이점이 있습니다.

1. 프로젝트의 전체 구조를 설계함

 - 다른 프레임워크는 웹, DB 영역에 전문적인 영역에 대해서만 지원하는 경우가 많았고 비즈니스 로직을 처리하는 부분에 대한 설계는 개발자의 역량에 맡기는 경우가 많았습니다. 스프링은 한 분야에 집중하지 않고 전체를 설계하는 용도로 사용돌 수 있습니다. 근본적인 구조는 OOP 구조를 뒷받침하고 설계합니다. 

2. 다른 프레임워크 포옹

 - 특정한 영역의 프레임워크와 공존하는 방식으로 사용할 수 있습니다. 다른 프레임워크들과의 통합을 지원하기에 최소한 수정이 가능합니다. 여러종류의 프레임워크를 혼용해서 사용할 수 있는 장점이 있습니다.

3. 복잡하지 않은 프레임워크

 - 경량화된 프레임워크로서 일반적으로 Java의 클래스, Interface를 이용하는 구조이기에 진입장벽이 높지 않습니다. 빠르게 엔터프라이즈급의 시스템을 작성할 수 있는 장점이 있습니다.

4. 개발의 생산성, 개발도구의 지원

 - STS, Eclipse(이클립스), Intellij 등 플러그인 지원 또한 빠른 업데이트가 되기에 새로운 개발도구에 대한 적응없이 개발이 가능합니다.

 

 

※ 스프링 동작원리

1. 스프링 프레임워크가 시작되면 먼저 스프링이 사용하는 메모리 영역을 만들게 되는데 이를 컨텍스트 라고 합니다. 스프링에서는 ApplicationContext 이름의 객체가 만들어집니다.

2. 스프링은 자신이 객체를 생성하고 관리해야 하는 객체들에 대한 설정이 필요합니다. 이에 대한 설정이 root-context.xml 파일입니다.

3. root-context.xml에 설정되어 있는 <context:component-scan> 태그내용을 통해 'org.zerock.sample' 패키지를 스캔하기 시작합니다.

4. 해당 패키지에 있는 클래스들 중에서 스프링이 사용하는 @Component 라는 어노테이션이 존재하는 클래스의 인스턴스를 생성합니다.

5. Restaurant 객체는 Chef 객체가 필요하다는 어노테이션(@Autowired) 설정이 있으므로 스프링은 Chef 객체의 레퍼런스를 Restaurant 객체에 주입합니다.

 

다음은 MVC 개념과 구조에 대해 알아보겠습니다.

스프링 MVC 프로젝트를 구성해서 사용한다는 의미는 내부적으로 root-context.xml로 사용하는 일반 Java 영역(흔히 POJO(Plain Old Java Object))과 servlet-context.xml로 설정하는 Web 관련 영역을 같이 연동해서 구동하게 됩니다.

WebApplicationContext라는 존재는 기존의 구조에 MVC설정을 포한하는 구조로 만들어집니다. 

스프링 MVC를 이용하게 되면 HttpServletRequest/HttpServletResponse 등 Servlet/JSP의 API를 사용할 필요성이 줄어듭니다. 왜냐하면 스프링이 중간역할을 하기 때문에 이러한 코드를 작성하지 않아도 원하는 기능을 구현할 수 있습니다.

 

MVC는 모델2 라는 방식으로 처리되는 구조인데요, 모델2방식은 로직과 화면을 분리하는 스타일의 개발방식입니다. 

사용자의 Request는 먼저 Controller를 호출하게 되고, 컨트롤러는 데이터를 처리하는 존재를 이용해서 데이터(Model)를 처리하고 Response할 때 필요한 데이터(Model)을 View쪽으로 전달하게 됩니다.

 

반응형