Start Spring Boot!
이 글은
스프링부트와 AWS로 혼자 구현하는 웹 서비스
라는 책을 참고하여 작성한 글입니다.
build.gradle
매번 자바로 프로그래밍할 때 봤던 파일이지만, 자주 열지도 않고 건들일 일이 거의 없었던 파일입니다. 안드로이드 앱을 만들때도 잠깐 만졌던 기억이 있지만 어디까지나 복붙의 과정이었을 뿐 제대로 살펴본 적이 없는데 이에 대해 한번 살펴보도록 하겠습니다.
1 | buildscript{ |
ext
: build.gradle에서 사용하는 전역변수를 설정
1 | apply plugin: 'java' |
책에서는 위와같이 plugin들을 설정을 했는데 위의 plugin들은 필수 플러그인들이므로 항상 추가하면 된다고 했습니다.
하지만, 형태를 보고 의아했는데 맨처음 default값으로 plugin들은 plugins{ id 'java'}
와 같이 설정되어 있어 차이가 무엇인가 궁금하여 스택오버플로우에서 검색해본 결과 다음과 같이 사용은 한다고 합니다.
1 | plugins { |
하지만, ‘DSL (plugins {...}
) does not work for your private plugins or company plugins which are not published to the official Gradle plugin repo’라고 하고 apply plugin을 아직 쓴다고 하기 때문에 위의 예시로 사용하겠습니다.
1 | repositories{ |
repositories
: 각종 의존성(라이브러리)들을 어떤 remote-repository(원격저장소)에서 받을지를 결정합니다. default값이기도하고 기본적으로 mavenCentral을 많이 사용하지만, 최근에는 라이브러리 업로드 난이도 때문에 jcenter도 많이 사용한다고 합니다. 이는 추후에 직접와닿으면 다시 한번 살펴보겠습니다.dependencies
: 프로젝트 개발에 필요한 의존성들을 선언하는 곳입니다. 이 때,compile
메서드 안에 라이브러리의 이름의 앞부분만 추가한 뒤 자동완성(CTRL+SPACE)을 사용하면 좋습니다. 단, version 명은 명시하지 않습니다. 그래야 위의buildscript
부분의 dependencies에서의 버젼에 따라갑니다.
Github
SpringBoot 프로젝트를 진행하기에 앞서 깃허브와 연동해보도록 하겠습니다. Jetbrain의 IDEA를 깔다보면 매번 연동된다는 사실을 인지하고 있었지만 한 번도 해본적이 없었습니다. 하지만, 이번에 그 위대한첫걸음을 한번 떼보겠습니다.
윈도우 환경에서 [CTRL+SHIFT+A]를 통해 Action 검색창을 열어 share project on github
를 검색해봅니다.
그 후 깃허브 로그인을 하는데
invalid authentication data.404 not found
가 출력되는 것입니다..!
구글링을 해본 결과 다음의 링크에서 token login을 하는 방법으로 로그인 해보았습니다.
주의할점 : 흥분한 나머지 모든 파일을 모두 commit하였지만 .idea
디렉터리는 commit에서 제외시켜야 합니다. 인텔리제이에서 프로젝트 실행시 자동으로 생성되는 파일들이기 때문에 깃허브에 올리는 것이 불필요합니다.
따라서, 앞으로 .idea
디렉터리를 커밋 대상에서 제외하기 위해 .gitignore
파일을 통해 .idea
디렉터리를 제외하도록 하겠습니다.
Test Code
백기선
님의 자바스터디를 하면서 가장 많이 보고 하고싶었던 JUnit을 통한 단위테스트입니다. 서비스의 모든 기능을 테스트 하기에는 자원이 너무 부족하기 때문에 새로운 기능이 추가될 때, 기존의 기능이 잘 작동되는 것을 보장해주는 것이 테스트코드입니다.
이를 마친 후 TDD에 대해 알아보겠습니다.
롬복을 통해 어노테이션을 생성하려 했는데 막상 플러그인을 설치하고나서 많은 오류가 발생했습니다. 실행이 되지 않는 경우는 다음과 같습니다.
Gradle version downgrade
11p에 그레이들과 JDK버젼이 명시되어 있었지만 성격급한 저는 읽고 바로 스킵한 덕에 오류가 났습니다. 기본적으로 인텔리제이에서 그레이들 버젼 5를 사용하고 있는데 이 링크에서 다운그레이드를 하면 해결됩니다.
Enable Annotation processing
70p에 롬복을 설치한 후 옵션을 활성화하라고 했지만 정독하지않는 저는.. 이번에도 지나치고 말았습니다. [Setting - Build, Execution, Deployment - Compiler - Annotation Processors] 메뉴에서 확인할 수 있습니다.
Build and Run
[Setting - Build, Execution, Deployment - Build Tools - Gradle]에서
Build and run using
옵션과Run test using
옵션을 IntelliJ IDEA로 옵션을 바꾸면 해결되는 문제였습니다.
Annotation
책에 소개되어 있는 Annotation에 대해서 간단히 살펴보겠습니다.
@Getter
- 선언된 모든 필드의 get method를 생성해줍니다.
@RequiredArgsConstructor
선언된 모든 final 필드가 포함된 생성자를 생성해줍니다.
final이 없는 필드는 생성자에 포함되지 않습니다.
@AssertThat
assertj라는 테스트 검증 라이브러리의 검증 메서드입니다.
검증하고 싶은 대상을 메서드 인자로 받습니다.
** 메서드 체이닝**이 지원되어 isEqulTo와 같은 메서드를 이어서 사용할 수 있습니다.
@isEqualTo
assertj의 동등 비교 메서드입니다.
assertThat
과isEqualTo
의 값을 비교해서 같을 때만 성공입니다.
Junit
에assertThat
과 다른 메서드입니다. assertj의 장점은 링크에서 확인할 수 있습니다. 다음에 확인해보도록 하겠습니다.
@RequestParam
- 외부에서 API로 넘긴 파라미터를 가져오는 어노테이션입니다.
Reference
스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- 이동욱