본문 바로가기

Java/Spring Boot

01-IntelliJ 설치 및 환경설정 (gradle, git)

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