01. 젯브레인 설치
- 젯브레인(https://www.jetbrains.com/ko-kr/)의 제품 전체를 관리해주는 데스크톱 앱
- 설치 후 maximum heap size 설정 (PC 메모리가 8G: 1024~2048, 16G: 2048~4096 선택)
02. gradle 프로젝트를 spring boot 프로젝트로 변경
- 변경 전 build.gradle
plugins {
id 'java'
}
group 'com.face.home'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
- 변경 후 build.gradle
# (1) ------------------
buildscript {
ext {
springBootVersion = '2.1.7.RELEASE'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
# (2) ------------------
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group 'com.face.home'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
# (3) ------------------
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
(1) 프로젝트 플러그인 의존성 관리를 위한 설정
- ext: build.gradle에서 사용하는 전역변수 설정
- spring-boot-gradle-plugin이라는 스프링 부트 그레이들 플러그인의 version을 설정한 version의 의존성으로 받겠다는 의미
(2) 앞서 선언한 플러그인 의존성들을 적용할 것인지 결정하는 코드
- 'io.spring.dependency-management': 스프링부트의 의존성들을 관리해주는 플로그인으로 필수적임
- 4개 플로그인은 자바와 스프링부트를 사용하기 위해 필수 플러그인으로 항상 추가
(3)
- repositories: 각종 의존성 라이브러리들을 어떤 원격 저장소에서 받을지 정함. 기본적으로 mavenCentral을 많이 사용. (최근 라이브러리 업로드 난이도를 이유로 jcenter도 많이 사용)
- dependencies: 프로젝트 개발에 필요한 의존성 선언 (선언 시 특정 버전을 명시하지 말것. 버전을 명시하지 않아야 ext에 설정한 springBootVersion의 버전을 따라감)
03. 프로젝트에 Github 설정
- 단축키 [ctrl+shift+A]로 Action창을 열어 share project on github 설치 후 로그인
- Initial commit 시 idea 디렉토리는 제외함 (인텔리제이에서 프로젝트 실행시 자동으로 생성되는 파일들이기 때문)
** .gitignore 추가
- Action창을 열어서 Plugins 선택 - Marketplace에서 .ignore install - 인텔리제이 재시작
- File - .ignore file - .gitignore file (Git) 선택 - 파일에 .gradle, .idea 추가 - 깃 커밋 및 푸쉬
04. 메인 클래스 작성
- com.face.home.springboot 패키지 작성 - Application 클래스 작성
package com.face.home.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- @SpringBootApplication : 스프링부트 자동설정, 스프링 Bean 읽기 및 생성을 자동 설정
- @SpringBootApplication이 있는 위치부터 설정을 읽기 때ㅜㅁㄴ에 이 클래스를 항상 프로젝트 최상단에 위치
- SpringApplication.run : 내장 WAS 실행. 내장 WAS는 언제 어디서나 같은 환경에서 스프링부트 배포를 가능하게 함.
05. 잘 실행 되는지 확인
- com.face.home.springboot.web 패키지 추가 - Hello Controller class 추가
package com.face.home.springboot.web;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
- 테스트 코드 작성
package com.face.home.springboot;
import com.face.home.springboot.web.HelloController;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HelloControllerTest {
@Autowired
private MockMvc mvc;
@Test
public void return_hello() throws Exception {
String hello = "hello";
mvc.perform(get("/hello")).andExpect(status().isOk()).andExpect(content().string(hello));
}
}
- @Autowired를 통해 MockMvc를 주입받음
- @AutoConfigureMockMvc : RestController의 HelloController를 찾아서 Mocking함
참고
스프링 부트와 AWS로 혼자 구현하는 웹서비스
'Java > Spring Boot' 카테고리의 다른 글
03-Spring Data JPA (0) | 2020.05.21 |
---|---|
02-Lombok (0) | 2020.05.20 |
SpringBoot-011-RestTemplate (0) | 2019.09.06 |
SpringBoot-010-CORS (Cross Origin Resource Sharing) (0) | 2019.09.05 |
SpringBoot-008-lombok 이용하기 (0) | 2019.09.01 |