❑ Spring 프로젝트 만들기
Spring 프로젝트 생성 URL: https://start.spring.io/
Spring Boot
SNAPSHOT은 정식 Release 버전이 아닌 테스트 버전이다
Project Metadata
- Group: 보통 회사명을 적는다 ex) com.samsung
- Artifact: Build 된 결과물
Dependencies: 사용할 Library 선택
- Spring Web: 웹 프로젝트 만드는데 사용
- Thymeleaf: HTML을 만들어주는 템플릿 엔진. 회사마다 사용하는게 다르다
위에까지 세팅한 후 GENERATE 클릭하면 바탕화면에 생성됨(Artifact명 또는 Name)
❑ IntelliJ에서 프로젝트 환경설정
Spring Project Open
IntelliJ 실행 후 Open or Import > HYPEOPLE 폴더 내 build.gradle 선택 > Open > Open As Project
Gradle 환경 설정
build.gradle 파일 Open
1. repositories
// 사용할 외부 Library를 받는 저장소
repositories {
mavenCentral()
}
- mavenCentral: Major Library들이 저장되어 있어 다운받을 수 있다
2. dependencies
// dependencies: 사용하는 Library. mavenCentral에서 내려받는다
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
- Spring Project를 생성할 당시 선택했던 thymeleaf와 web(Spring Web)이 포함되어 있음
- testImplementation은 테스트 도구인 JUnit5가 기본 내장된 것
위와 같이 starter-web, thymeleaf 를 입력하면 두 개의 라이브러리가 의존하는 모든 패키지를 함께 받게 된다. 그래서 Gradle External Libraries를 보면 내가 받지 않은 다양한 spring-boot 라이브러리가 추가된 것을 확인할 수 있다.
[주요 라이브러리]
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: log 관련 라이브러리는 이 두 가지 조합이 최근에는 표준
- spring-boot
tomcat 라이브러리도 포함된 것을 확인할 수 있는데 과거에는 이러한 웹 서버(WAS)를 직접 설치하는 번거로운 작업을 해야했지만 요즘은 Spring에 내장되어 있어 이런식으로 개발한다.
Test 라이브러리
- spring-boot-starter-test
- junit: 테스트 프레임워크
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성할 수 있도록 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
3. Gradle Project Build and Run Option
Preference > Gradle 검색 > Gradle Projects > Build and run > Build and run using과 Run tests using 옵션을 전부 IntelliJ IDEA로 변경
Gradle을 통해 Build하면 느릴때가 있다고 한다.
'Back-End > Spring' 카테고리의 다른 글
[Spring] 의존성 주입(DI)과 IoC 컨테이너의 개념 (0) | 2021.07.16 |
---|---|
[Spring] Spring Bean과 의존 관계(Dependency Injection) (0) | 2021.07.09 |
[Spring] 강한 결합(Tight Coupling)과 느슨한 결합(Loose Coupling) (1) | 2021.07.04 |
[Spring] 웹 개발 기초 개념 - 정적 컨텐츠, MVC와 템플릿 엔진, API (0) | 2021.07.02 |
[Spring] Welcome Page 생성, MVC 이해하기 (0) | 2021.06.29 |