스프링 프레임워크(Spring Framework)
- EJB(Enterprise Java Bean)라는 무겁고 복잡한 플랫폼에서 벗어나 POJO(Plain Old Java Object)를 기반으로 하는 경량의 환경을 제공한다.
- 스프링 프레임워크가 처음 등장했을 떄는 단순히 애플리케이션 운용에 필요한 객체들을 생성하고, 객체들 사이에서 의존성을 주입해주는 단순한 컨테이너로서의 기능만 제공했지만 발전을 거듭한 현재의 스프링은 다양한 엔터프라이즈 시스템 개발에 필요한 모든 분야를 지원하는 하나의 플랫폼으로 자리잡았다.
- 하지만 다양한 프레임워크와 기술들을 지원하면서 동시에 개발자가 처리해야하는 설정도 많아지고 복잡해졌다.
- 복잡한 설정에서 발생한 문제들을 해결하려는 노력의 일환으로 '스프링 부트'라는 서브 프로젝트가 진행되었다.
스프링 부트(Spring Boot)
단독 및 출시용 스프링 애플리케이션을 최소한의 수고로 만들 수 있게 해주는 부트스트랩 엔진(bootstrap engine)으로 생각할 수 있다.
Spring Boot의 장점
1) 라이브러리 관리 자동화
- 기존 스프링 자바 프로젝트에서는 메이븐이나 그래들을 이용해서 라이브러리 의존성을 관리해왔다. 하지만 스프링 부트에서는 스타터(Starter)라는 것을 이용해 특정 기능에 필요한 라이브러리 의존성을 더욱 간단히 처리 할 수 있다.
2) 설정의 자동화
- 스프링 부트에서는 프로젝트에 추가된 라이브러리를 기반으로 실행에 필요한 환경을 자동으로 설정해준다.
- 개발에 필요한 라이브러리들을 추가하면 스픵 부트가 이 라이브러리들을 인지해서 관련된 스프링 설정을 자동으로 처리해주기 때문에 개발자들은 복잡한 설정을 하지 않고도 개발이 가능하다.
3) 라이브러리 버전 자동 관리
- 개발시 가장 신경쓰이는 부분이 라이브러리와 버젼 관리이다. 기존의 스프링은 스프링 라이브러리만 사용하여 개발할 수 없으며, 의존관계에 있는 서드파티 라이브러들도 사용한다. 스프링 부트를 사용하면 스프링 부트 버전에 해당하는 스프링 라이브러리뿐만 아니라 서드파티 라이브러리들도 호환되는 버전으로 다운로드해준다.
- 라이브러리 버전이 달라 정상적으로 동작하지 않는 상황을 겪을 필요가 없고, XML설정을 이용해서 라이브러리를 매번 설정하는 과정을 줄이고 개발에만 집중할 수 있는 환경을 제공한다.
4) 테스트 환경과 내장 Tomcat
- JUnit을 비롯한 테스트 관련 라이브러리들이 기본적으로 포함되어 있기 때문에 컨트롤러를 비롯한 다양한 계층의 클래스들에 대해서 테스트 케이스를 쉽게 작성할 수 있다.
- Tomcat 서버를 내장하고 있기 때문에 단지 main() 메소드를 가진 클래스를 실행하는 방식으로 서버를 구동하기 때문에 실행결과를 빠르게 확인할 수 있다.
5) 독립적으로 실행 가능한 JAR
- 애플리케이션을 개발하고 테스트까지 마쳤으면 애플리케이션을 실제 운영 서버에 배포하기 위해서 패키징을 해야하는데, 프로젝트가 일반 자바 프로젝트라면 간단하게 JAR파일로 패키징하면 되지만 웹 프로젝트라면 WAR 파일로 패키징 해야한다.
- 스프링 부트는 독립적으로 실행 가능한 애플리케이션을 빠르게 개발하는 것을 목표로 하기 때문에 웹 애플리케이션도 WAR가 아닌 JAR파일로 패키징 하여 사용할 수 있다.
스프링 부트 공식 사이트 : http://projects.spring.io/spring-boot
개발환경(IDE)
Intellij
Java Version : JDK SE 1.8
Spring-Boot Version : 2.5.0.RELEASE
new 프로젝트 시작
웹브라우져에서 localhost:8080 접속
포트변경
src/main/resources/application.properties
server.port = 8070
'프로그래밍 > Java' 카테고리의 다른 글
인텔리제이 스프링부트 타임리프 (intellij SpringBoot thymeleaf) Hellow World 시작하기 (0) | 2021.11.12 |
---|---|
인텔리제이(IntelliJ) 스프링 부트(spring boot) 개발시 Thymeleaf 자동 리로드/정적리소스 새로고침으로 실시간 반영하기 (0) | 2021.11.12 |
mac 인텔리제이(intellij) 스프링부트(spring boot) 포트에러 발생시 Port 8080 was aleady in use (0) | 2021.11.12 |
intellij java8 웹소켓 서버 (WebSocket Server) 구축 (0) | 2021.11.10 |
Spring boot + swagger 예제 (0) | 2020.12.04 |