Spring vs Spring Boot
- Spring : 자바 엔터프라이즈 관련 프레임워크 입니다.
주요 목표 : 의존성 주입, 중복코드 제거(ex.JDBC templet), 타 프레임워크 통합
-> 개발자는 비즈니스로직 구현에 몰두
- Spring Boot : Spring을 더 쉽게 쓸 수 있게 돕고, 톰캣 서버까지 내장한 프레임워크 입니다.
주요 목표 : 의존성 관리, 내장 서버(톰캣)
Spring 프로젝트 생성
![](https://velog.velcdn.com/images/eddle/post/d123ff4d-da76-4719-a20a-912d4c6d088d/image.png)
강의에서는 start.spring.io에 접속해서 생성했지만,
인터넷이 연결된 상태에서 인텔리제이를 사용한다면 프로젝트 생성 할 때 서버URL에 https://start.spring.io를 입력하면 접속하지 않고 생성이 가능합니다.
그룹은 보통 회사의 도메인을 역순으로 작성합니다.
JDK와 Java는 11버전으로 사용합니다.
![](https://velog.velcdn.com/images/eddle/post/78e8fe91-95ef-4e95-bae4-90f092a8d6c7/image.png)
SpringBoot을 3.대의 버전을 사용했더니 gradle(build도구 중 하나로서 의존 관계의 라이브러리들을 자동으로 가져오고 빌드하며 라이프사이클을 관리해주는 도구.)과 에러가 발생하여 학습용으로 2.7.11을 사용했습니다.
종속성은 프로젝트를 위한 라이브러리들을 검색해서 추가하는 곳입니다.
- Lombok :Java 라이브러리로 반복되는 getter, setter, toString 등의 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리
- Spring Boot DevTools : 앱 개발 생산성 향상 관련 라이브러리.
<Spring Boot DevTools 기능>
Automatic Restart : claapath에 있는 파일이 변경
될 때마다 앱을 자동으로 재시작합니다.
Live Reload : 정적 자원(html, css, js) 수정 시
새로고침 없이 바로 적용합니다.
* Property Defaults : Thymeleaf는 기본적으로 성능
향상 위해서 캐싱 기능을 사용한다. 이 경우 수정한 소스가
제대로 반영되지 않을 수 있으므로 cache의 기본값을
false로 설정할 수 있습니다.
프로젝트 생성 시 의존성 추가 후
build.gradle에서 dependencies에
compileOnly'org.springframework.boot:spring-boot-devtools' 추가
![](https://velog.velcdn.com/images/eddle/post/7dcc60a4-8b1e-42f6-9270-6556e8bc9f6f/image.png)
file->setting 혹은 cntl+alt+s로 설정 창 열어서
Build, Exeution, Deployment > Compiler
> Build project autiomaically 클릭
![](https://velog.velcdn.com/images/eddle/post/c360c6fb-eeba-48df-a216-655de52c31c2/image.png)
Advanced Settings > Compiler
> Allow auto-make to start even if developed
application is currently running 클릭
![](https://velog.velcdn.com/images/eddle/post/576ee43f-63a1-463e-ab02-1bf80d0709b1/image.png)
이제 Spring boot 프로젝트가 실행 중인 상황에서 코드의 변경이 발생하였을 때
자동으로 빌드를 하여 즉각적으로 변경 내용을 확인할 수 있습니다.
- Thymeleaf : html관련 템플릿 라이브러리
- Spring Web : 아래와같은 웹 프로젝트 생성에 사실상 필우인 라이브러리. 아래는 Spring Framework Runtime을 설명한 그림이며, 빨간 V표시 된 Web이 Spring Web에 대한 그림입니다.
![](https://velog.velcdn.com/images/eddle/post/a13eb6d8-b50b-4ecf-a676-675c29e22c9c/image.png)
<의존성에서 체크하지 않았지만, 기본적으로 설정되는 라이브러리 중 일부 소개>
-
스프링 부트 라이브러리
- spring-boot-starter(공통) : springboot + spring core + logging
- spring-boot-starter-logging
- spring-boot-starter-tomcat: 톰캣(내장 웹서버)
- spring-webmvc : Servlet API 기반,
클라이언트 요청 처리하는 모듈
-
테스트 라이브러리
- spring-boot-starter-test
- spring-test: 스프링 통합 테스트 지원
- junit: 테스트 프레임워크
- mockito: 단위테스트를 효율적으로 하기 위한 프레임워크
- assertj: 테스트코드를 좀 더 편하게 작성할 수 있게 도와주는 라이브러리
설정을 마치고 프로젝트가 잘 생성됐는지 확인하기 위한 실행 결과입니다. 아래와 같이 1. Spring 글자 확인 후
![](https://velog.velcdn.com/images/eddle/post/62e7ad59-aeb3-4924-92d1-f249fc5bc92c/image.png)
브라우저에 localhost:8080을 입력하면 원래 아래와 같이 사이트 연결 불가 페이지가 나오는데
![](https://velog.velcdn.com/images/eddle/post/facf9cdd-dc51-4d95-8b3a-b37c384f0c37/image.png)
아래와 같이 2. Whitelabel Error Page가 발생하였다면 정상적으로 생성된 것 입니다.
![](https://velog.velcdn.com/images/eddle/post/410e8b33-6a6c-4a84-ae31-617032c70199/image.png)