[스프링] 자바 스프링 시작하기
💡 tl;dr
- 프로젝트
 - 라이브러리
 - View 환경설정
 
프로젝트
프로젝트 생성
- Java 11 필요
 - 부트 스타터 사이트를 이용한 스프링 프로젝트 생성
- https://start.spring.io
 - Project
- 프로젝트 타입 설정
 - Gradle Project : 근래에 주로 사용되는 툴
 - Maven Project : 필요한 라이브러리를 땡겨와 관리까지 하는 툴
 
 - Spring Boot
- 버전 선택
 - SNAPSHOT은 베타버전
 
 - Language
- 사용 언어 선택
 
 - Project Metadata
- groupId : 그룹명 (임의)
 - artifactId : 빌드 결과물(프로젝트 명)
 - Name : 프로젝트 이름
 - Description : 설명
 - Package name : 패키지 이름
 
 
 - Dependencies: Spring Web, Thymeleaf 선택
 - Generate 후 IntelliJ Import
 
프로젝트 구조
- gradle : gradle 관련 폴더
 - src
- main
- java : 메인 자바 파일 모음
 - resources : 자바 파일 외 모든 파일들 (HTML 등)
 
 - test : 테스트 파일 리소스들 (그만큼 요즘 개발 트렌드에는 테스트가 중요하다)
 
 - main
 - build.gradle : gradle 빌드 옵션 파일
 - gradlew
 - gradlew.bat
 
프로젝트 실행
- 실행시 내장된 톰캣 로컬 서버가 자동 실행됨
 - IntelliJ 사용시 Gradle 빌드 옵션을 IntelliJ로 설정하면 더 빠른 빌드 가능
 
라이브러리
스프링 부트 라이브러리
- 스프링을 빌드하면 여러 external library 가 함께 설치된다.
 - IntelliJ에서 
Gradle탭에서 Dependencies 를 확인할 수 있다.- 필요한 디펜던시를 전부 끌어온다(스프링 코어까지). 중복은 알아서 거른다.
 
 
- 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
 
 
 - spring-boot
 
테스트 관련 라이브러리
- spring-boot-starter-test
- junit: 테스트 프레임워크 (자바에서도 대부분 사용)
 - mockito: 목 라이브러리
 - assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
 - spring-test: 스프링 통합 테스트 지원
 
 
View 환결설정
Welcome page 만들기
resources/static/index.htmlstatic에 있는index.html을 우선적으로 웰컴 페이지로 설정- 설명
 
- thymeleaf 템플릿 엔진
 
- 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버( viewResolver )가 화면을 찾아서 처리한다. 
- 스프링 부트 템플릿엔진 기본 viewName 매핑
 - resources:templates/ +{ViewName}+ .html
 
 
빌드하고 실행하기
- 콘솔로 이동
- 필요시 
JAVA_HOME환경설정 (export JAVA_HOME=”{which java 결과물}“) 
 - 필요시 
 - Recompile
./gradlew buildcd build/libsjava -jar hello-spring-0.0.1-SNAPSHOT.jar- 실행확인
 
 
[참조]
[스프링] 자바 스프링 시작하기
![[스프링] 자바 스프링 시작하기](/img/spring.png)
![[스프링] 자바 스프링 시작하기](/img/thumbnail/thumb_spring.png)
![[운영체제] 멀티스레드의 문제점](/img/thumbnail/thumb_os.png)
![[자료구조] 스택(Stack)과 힙(Heap)](/img/thumbnail/thumb_ds.jpg)
![[SWEA] 프로세서 연결하기](/img/thumbnail/thumb_swea.png)
![[백준] 주사위 굴리기](/img/thumbnail/thumb_baekjoon.jpg)