Section 1. Spring
1. Spring 구조
- WAS / Servlet / JSP / DI / IOC / MVC ... 등등 여러 기술 스택과 설정이 필요함
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Fc73b3248-0eed-4b47-9917-366f5563fc15%2Fimage.png)
2. Spring Boot 필요성
- Spring 으로만 Web App 을 구성할 때 필요한 밑단 설정들을 Boot 가 알아서 처리해줌
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F9b5fe57a-ec5b-4450-9e01-bc9d6086b5d5%2Fimage.png)
3.Spring Boot 의 특징
- 'starter' dependencies 제공 (jar 파일, 라이브러리 등)
- Automatically configure 제공 (xml, annotation, configuration 등)
- No code generation / No requirement for XML
Section 2. Spring Boot 프로젝트
1. Java 11
2. IntelliJ
3. Spring Boot start
- Spring Boot Start
- Spring Boot 기반으로 Java Spring 프로젝트를 생성해주는 initializer
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F10e42392-9858-4f58-98c6-60cefe518068%2Fimage.png)
- Maven / Gradle - 필요한 라이브러리, 빌드 및 컴파일 등 프로젝트 개발 자동화 툴
- Spring Web - RESTful, Spring MVC, Apache Tomcat container
- Thymeleaf - HTML 생성 엔진
4. IntelliJ starter 열기
- 다운version = '0.0.1-SNAPSHOT'받은 Starter 에서 build.gradle Open
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Ffdc57bac-ba79-458d-aea8-53d6fb0543ef%2Fimage.png)
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F307f5445-5542-44f6-ab9c-6234e0c29831%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-09-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.06.33.png)
5. build.gradle
- Eclipse-Spring-Maven 환경에서의 pom.xml 역할
- version - Web App 프로젝트의 버전을 나타냄
- repositories - 'mavenCentral' 이라는 remote repository 참조
- dependencies - 다운로드 받은 라이브러리들 (remote repository 참조)
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Fad925397-cd68-4fc0-b596-8101f5242669%2Fimage.png)
6. Spring Boot Web App 실행
- SpringApplication 클래스를 이용하여 프로젝트의 메인 클래스인 HelloSpringApplication 실행
- 8080 포트로 Apache Tomcat 실행됨 (Spring Boot 에 내장되어있음)
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Fe67e8f17-ee93-4d7c-a4cd-2892b187bc0f%2Fimage.png)
7. IntelliJ Java 실행
- Gradle 을 통해서 시작하지 않고 Java 를 통해 직접 실행 -> 속도 향상
- IntelliJ IDEA 로 변경
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F37117908-d61a-4214-9052-5dcd65f30469%2Fimage.png)
8. Java 버전 설정
- Gradle JDK 설정
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Fcb06111e-b40f-4dae-9dc3-73c5ddabe864%2Fimage.png)
- 프로젝트 JDK 설정 (File - project structure)
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Fb1e0c339-d1c9-4689-8189-a4237d21a0e6%2Fimage.png)
Section 3. Spring Boot 라이브러리
1. 의존관계 라이브러리
- Gradle / Maven 은 라이브러리의 의존관계 및 하위 라이브러리들을 자동으로 가져옴
2. Spring Boot 라이브러리
- spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣 (웹서버)
- spring-webmvc: 스프링 웹 MVC
-
spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)
-
spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
- spring-boot -> spring-core
- spring-boot-starter-logging -> logback, slf4j
2. 테스트 라이브러리
- spring-boot-starter-test
- junit: 테스트 프레임워크
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원