본문 바로가기

Java/SpringBoot

[SpringBoot] Spring Framework와 Spring Boot 장점 정리

Framework

- 사전적 의미는 '뼈대' 혹은 '구조'이다. 

- 소프트웨어 관점에서 해석하면, 프레임워크는 애플리케이션의 아키텍처에 해당하는 골격 코드라고 할 수 있다.

 

- 애플리케이션을 개발할 때 가장 중요한 것이 애플리케이션 전체 구조를 결정하는 아키텍처이다.

- 아키텍처에 해당하는 코드를 직접 개발하는 것이 아니라 프레임워크로부터 빌려 쓰면, 개발자는 아키텍처와 결합할 비즈니스 로직 개발에만 집중할 수 있게 된다.

 

JAVA 기반의 오픈 소스 프레임워크

처리 영역 프레임워크 설명
Presentation 스트러츠 MVC(Model View Controller) 아키텍처를 제공하는 프레임워크이다.
스프링 (MVC) 스트러츠 같은 MVC 아키텍처를 제공하지만 스트러츠처럼 독립적으로 존재하지 않고 스프링 프레임워크에 포함되어 있다.
Business 스프링 (loC, AOP) 스프링의 loC와 AOP 모듈을 이용하여 스프링 컨테이너에서 동작하는 비즈니스 컴포넌트를 개발한다.
Persistence JPA JPA(Java Persistent API)는 하이버네이트(Hibernate)를 비롯한 모든 ORM(Object Realation Mapping) 프레임워크의 표준이다.
MyBatis 마이바티스는 XML 파일에 작성한 SQL을 자바 객체(VO)와 매핑해주는 데이터 매퍼 프레임워크다.

 

- 오픈소스 프레임워크 중에서 가장 중요한 것이 스프링인데, 이는 스프링이 다른 프레임워크와 경쟁이 아닌 통합을 지향하기 떄문이다. 따라서 스프링을 이용하면 다른 프레임워크들을 쉽게 연동할 수 있어서 프로젝트 환경이나 개발자들의 역량에 따라 다양한 조합으로 애플리케이션을 구축할 수 있다. 

 


Spring Framework

- EJB(Enterprise Java Bean)라는 무겁고 복잡한 플랫폼에서 벗어나 POJO(Plain Old Java Object)를 기반으로 하는 경량의 환경을 제공한다.

- 스프링 프레임워크가 처음 등장했을 떄는 단순히 애플리케이션 운용에 필요한 객체들을 생성하고, 객체들 사이에서 의존성을 주입해주는 단순한 컨테이너로서의 기능만 제공했지만 발전을 거듭한 현재의 스프링은 다양한 엔터프라이즈 시스템 개발에 필요한 모든 분야를 지원하는 하나의 플랫폼으로 자리잡았다.

 

- 하지만 다양한 프레임워크와 기술들을 지원하면서 동시에 개발자가 처리해야하는 설정도 많아지고 복잡해졌다.

- 복잡한 설정에서 발생한 문제들을 해결하려는 노력의 일환으로 '스프링 부트'라는 서브 프로젝트가 진행되었다.

 


Spring Boot의 장점

1) 라이브러리 관리 자동화

 - 기존 스프링 자바 프로젝트에서는 메이븐이나 그래들을 이용해서 라이브러리 의존성을 관리해왔다. 하지만 스프링 부트에서는 스타터(Starter)라는 것을 이용해 특정 기능에 필요한 라이브러리 의존성을 더욱 간단히 처리 할 수 있다.

 

2) 설정의 자동화

- 스프링 부트에서는 프로젝트에 추가된 라이브러리를 기반으로 실행에 필요한 환경을 자동으로 설정해준다.

- 개발에 필요한 라이브러리들을 추가하면 스픵 부트가 이 라이브러리들을 인지해서 관련된 스프링 설정을 자동으로 처리해주기 때문에 개발자들은 복잡한 설정을 하지 않고도 개발이 가능하다.

 

3) 라이브러리 버전 자동 관리

- 개발시 가장 신경쓰이는 부분이 라이브러리와 버젼 관리이다. 기존의 스프링은 스프링 라이브러리만 사용하여 개발할 수 없으며, 의존관계에 있는 서드파티 라이브러들도 사용한다. 스프링 부트를 사용하면 스프링 부트 버전에 해당하는 스프링 라이브러리뿐만 아니라 서드파티 라이브러리들도 호환되는 버전으로 다운로드해준다.

- 라이브러리 버전이 달라 정상적으로 동작하지 않는 상황을 겪을 필요가 없고, XML설정을 이용해서 라이브러리를 매번 설정하는 과정을 줄이고 개발에만 집중할 수 있는 환경을 제공한다.

 

4) 테스트 환경과 내장 Tomcat

- JUnit을 비롯한 테스트 관련 라이브러리들이 기본적으로 포함되어 있기 때문에 컨트롤러를 비롯한 다양한 계층의 클래스들에 대해서 테스트 케이스를 쉽게 작성할 수 있다.

- Tomcat 서버를 내장하고 있기 때문에 단지 main() 메소드를 가진 클래스를 실행하는 방식으로 서버를 구동하기 때문에 실행결과를 빠르게 확인할 수 있다.

 

5) 독립적으로 실행 가능한 JAR

애플리케이션을 개발하고 테스트까지 마쳤으면 애플리케이션을 실제 운영 서버에 배포하기 위해서 패키징을 해야하는데, 프로젝트가 일반 자바 프로젝트라면 간단하게 JAR파일로 패키징하면 되지만 웹 프로젝트라면 WAR 파일로 패키징 해야한다.

- 스프링 부트는 독립적으로 실행 가능한 애플리케이션을 빠르게 개발하는 것을 목표로 하기 때문에 웹 애플리케이션도 WAR가 아닌 JAR파일로 패키징 하여 사용할 수 있다.