스프링부트 사용하기
스프링부트 코딩공작소를 따라하며 정리한 내용입니다!
스프링부트 프로젝트를 만들기 위해서 Spring Initializr 에서 프로젝트관련 정보를 선택해 생성했습니다.
우측에 ADD DEPENDENCES를 클릭해 필요한 의존성을 선택했습니다.
Spring Web, Thymeleaf, Spring Data JPA, H2 Database를 선택하고 GENERATE를 하면 zip파일로 프로젝트가 생성됩니다.
인텔리제이에서 다운받은 프로젝트를 열어보았습니다.
아래 구조와 같은 것을 볼 수 있습니다.
build.gradle : 그레이들 빌드 명세
gradlew : 그레이들 래퍼, 프로젝트를 설정할 때 java나 gradle을 설치하지 않고 바로 빌드할 수 있게 해주는 역할
ReadingListApplication.java : 애플리케이션의 부트스트랩 클래스이자 주 스프링 구성 클래스
application.properties : 애플리케이션과 스프링 부트 프로퍼티를 구성하는데 사용하는 파일
ReadingListApplicationTests.java : 기본 통합 테스트 클래스
ReadingListApplication.java 클래스는 스프링 구성 클래스이다.
@SpringBootApplication 애너테이션은 스프링 컴포넌트 검색과 스프링 부트 자동 구성을 활성화하고 부트스트랩 클래스로 main() 메서드가 명령줄에서 실행 가능한 JAR 파일로 애플리케이션을 실행 할 수 있게 한다.
실행하는 방법으로는 gradle로 build하거나 main()메소드를 실행시키는 방법이 있다.
먼저 main()메소드를 Run해보겠습니다.
인텔리제이에서 실행한 결과입니다.
gradle 빌드로도 실행할 수 있습니다.
빌드된 jar파일로 실행하면 아래와 같이 실행됩니다.
localhost:8080으로 접속해보면 아직은 실행할파일이 없어 404오류가 나옵니다.
ReadingApplicationTest는 JUnit테스트를 위한 클래스로 테스트를 위한 코드를 작성할 수 있습니다.
application.properties에서 실행하는 포트를 바꿔서 실행할 수도 있습니다.
실행해보면
Tomcat intialized with port(s) : 8080(http)를 확인할 수 있습니다.
build.gradle을 살펴보면 버전, 의존성등을 확인할 수 있습니다.
dependencies 테스크로는 프로젝트에서 사용하는 모든 라이브러리와 각 버전을 포함한 의존성 트리를 확인할 수 있습니다.
의존성 오버라이드를 해보기 위해서 먼저 com.fasterxml.jackson.core 의 버전을 확인했습니다.
현재 버전은 2.11.4 라서 아래 버전으로 변경해보겠습니다.
책에 있는 것처럼 compile을 사용해서 변경하려 했으나 오류가 나서 확인해보니 complie이 사라졌다고 합니다.
https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_separation
Gradle 7.0에서는 compile과 runtime이 사라지고 implementation과 api 로 사용할수 있다고 합니다.
그래서 implementation으로 변경해서 의존성 오버라이드를 하고 빌드를 해보면 버전이 바뀐것을 확인할 수 있습니다.