Todo App 과제 제출도 끝이 나고, 2주간 입문 숙련 과정을 마치면서 배웠던 개념들을 다시 한번 정리해 보고 가려 합니다.
1. Library 와 Framework 의 차이
2024.05.07 - [분류 전체보기] - 2024-05-07 [Kotlin+Spring 입문 Spring 보다 자세하게 이해하고 공부하자]
2024-05-07 [Kotlin+Spring 입문 Spring 보다 자세하게 이해하고 공부하자]
Spring 개념을 뜯어보자Spring은 JAVA / Kotlin 기반의 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 Application Framework 입니다.해당 정의만 보면 이해가 잘 가지 않아, 뜯어보며 정의를 조금 더 깊숙
hongjinkwon.tistory.com
2. 각 계층 (Controller, Service, Repository) 이해하기
2024.05.08 - [분류 전체보기] - 2024-05-08 [Kotlin+Spring DTO(Data Transfer Object), Domain Model]
2024-05-08 [Kotlin+Spring DTO(Data Transfer Object), Domain Model]
DTO 그리고 Domin Model 을 학습하기 전,Web Application을 만들기 위해 필요한 요구사항들과 Spring에서 일반적으로 많이 사용하는 Layer 구조를 짚고 넘어가려 합니다. Web Application을 만들기 위해 필요한
hongjinkwon.tistory.com
3. JPA & Jpa Repository
2024.05.21 - [분류 전체보기] - 2024-05-21 [Spring interface만으로 동작하는 JpaRepository (Feat.Kotlin)]
2024-05-21 [Spring interface만으로 동작하는 JpaRepository (Feat.Kotlin)]
보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.
hongjinkwon.tistory.com
4. Spring 과 Spring boot 차이
맨 위의 첨부한 포스팅에서도 Spring 에 대한 자세하게 다루어 보았으나, 금일은 두 개의 차이점에 초점을 맞추어 설명드리려 합니다.
Spring VS Spring boot
Spring
Spring은 JAVA / Kotlin 기반의 개발을 편하게 할 수 있게 해주는 Application Framework 입니다.
Spring 하면 Spring Framework 만 생각하기 쉬우나, 사실 스프링은 하나의 기술이 아닌 여러가지 프로젝트들의 모음 입니다.

(Spring 사이트에 들어가 보면, 이미지 내 보이는 프로젝트 외에도 더욱 다양한 프로젝트들을 확인할 수 있습니다.)
이 모든 스프링 프로젝트들은 스프링 프레임워크 기반으로 동작하는데,
스프링 생태계가 점점 커져가면서 스프링 프레임워크가 제공하는 기능들이 많아지면서 오히려 기능들을 잘 활용하는데 어려움이 생기기 시작했습니다.
그래서 등장한 서브 프로젝트가 Spring Boot 입니다.
Spring Framework
Spring Framework 를 사용하면서 가장 큰 이점은 개발자들이 비즈니스 로직에 집중할 수 있다는 점인데요.
스프링 이전, EJB 라는 프레임워크가 있었으나, 개발자들이 애플리케이션 비즈니스 로직에 집중할 수 없고, EJB Framework 를 사용하기 위한 코드들의 양이 너무 많았고 (EJB 를 사용하기 위해 개발자들이 따로 구현해야 하거나 상속해야 하는 코드), 때문에 EJB 에 너무 의존하다 보니 Java 의 장점을 살리는데 어려움이 있었습니다.
해당 단점들을 극복할 수 있도록 이후 등장한 프레임워크가 Spring 이며, 이름이 '봄' 인 이유도 '추운 겨울이었던 EJB 를 지나 맞이한 봄' 의미를 갖기 때문입니다.
스프링은 초기 설정만 잘 해두면 EJB 프레임워크와 거의 동일한 기능을 제공하면서 가장 중요한 비즈니스 로직과 애플리케이션 기술 분리 목적도 성공적으로 달성할 수 있을 뿐 아니라 Java 의 최대 장점인 객체 지향을 최대한 살려 개발이 가능해졌습니다.
하지만 스프링의 생태계가 점점 커져가고, 스프링 기능들이 증가, 이에 더해 다양한 오픈소스들이 등장하면서 외부 라이브러리와 함께 사용할 일들이 증가하기 시작했습니다.
때문에 스프링 기반으로 개발 시 직접 해야하는 설정들이 많아지기 시작했습니다.
그래서 등장한 것이 Spring Boot 입니다.
Spring Boot
스프링 부트를 사용하면 스프링 기반으로 애플리케이션을 쉽게, 편리하게 제작할 수 있습니다.
스프링을 이용해 개발에 필요한 복잡한 설정들을 서브 프로젝트인 Spring Boot 가 대신해주어 개발자는 즉시 비즈니스 로직에 집중하여 개
발할 수 있게 되었습니다.
Spring Boot 가 제공하는 구체적인 기능들
내장 서버
이전, 제작을 완료한 웹 애플리케이션을 배포하기 위해,
WAS 를 설치하고, 웹 애플리케이션 코드를 WAR 로 빌드하고, WAR 파일을 WAS 폴더 하위에 넣어 WAS 를 실행했어야만 했습니다.
해당 과정을 간소화하기 위해, Spring Boot 는 라이브러리로 포함하는 내장 톰캣 기능을 제공하였고, Main 메서드만 실행하면 애플리케이션이 바로 실행될 수 있도록 하였습니다.
(아래 글에서 내장 웹 서버 활용 방안에 대해 자세히 다루고 있어, 필요하신 분들은 참고 부탁드리겠습니다.)
[Spring Boot] 내장 웹 서버 개념 및 활용(서버 변경, 포트 변경)
1. 내장 서블릿 컨테이너(웹 서버) 스프링 부트는 서버가 아니라 내장 서블릿 컨테이너를 쉽게 사용할 수 있도록 해주는 Tool이다. 서버 : Tomcat, Netty, Jetty, undertow 스프링 부트를 사용해 프로젝트를
cocococo.tistory.com
starter(특정 목적을 위한 라이브러리 의존성 그룹) 제공
이전 스프링 기반 개발을 시작하려면
필요한 라이브러리를 모두 작성하고, 라이브러리 내 버전을 하나 하나 기재해야 했습니다. 더 큰 문제는 버전끼리 호환되지 않는 경우가 발생하기도 했습니다.
그래서 스프링 부트는 이를 도와주기 위해 라이브러리를 관리하는 편리한 툴을 제공합니다.
spring.dependency-management 플러그인을 추가하면 각 라이브러리의 버전을 생략할 수 있게 되고, 기본 라이브러리 묶음을 제공합니다.
Stater 를 제공하며 다음과 같은 이점이 있습니다.
1. 필요한 모든 라이브러리의 의존성을 일일히 찾아볼 필요 없습니다.
2. 빌드(maven/gradle) 구성 코드를 간소화합니다.
3. 라이브러리의 의존성 버전을 권장 버전으로 자동 설정해 줍니다.
4. 버전 충돌 문제를 피할 수 있고, 의존성을 설정하기 쉬워집니다.