Dependencies 선택
SPRING INITIALIZR 웹페이지에서 의존성(Dependencies)을 선택하면 어떤 일이 발생하는지 알아보고자 합니다.
1. Web 추가하기
먼저 SPRING INITIALIZR 사이트의 기본값을 그대로 유지한 채 프로젝트를 하나 생성한 뒤, Web(Full-stack web development with Tomcat and Spring MVC) 항목을 선택한 뒤 프로젝트를 생성해서 둘을 비교해보았습니다.
뭔가 좀 익숙한 모양일 겁니다. 바로 Project Metadata 변경에서 Packaging 을 War 로 선택했을 때와 거의 유사하다는 것을 알 수 있을 겁니다.
그런데 분명 설명에는 Tomcat 을 이용한다고 했는데 War 로 선택했을 때 존재하던 Tomcat 관련 내용은 추가되지 않았습니다. 이유는 추가된 spring-boot-starter-web 에 Tomcat 관련된 것이 이미 포함되어 있기 때문입니다. 이 부분에 대한 자세한 설명은 IDE 을 이용해서 좀 더 분석할 기회가 있을 때 설명하도록 하겠습니다.
2. Lombok 추가하기
Core 영역에 Lombok(Java annotation library which helps to reduce boilerplate code and code faster) 이라는 항목이 존재합니다. Lombok 을 모르시는 분이 계신다면 굳이 Spring Boot 가 아니라도 Java 로 개발할 때 매우 편리한 기능을 제공하기 때문에 IDE 을 이용해서 개발할 때에는 꼭 이용하시길 권합니다.
Lombok 을 추가로 선택한 뒤 다시 프로젝트를 생성해서 처음 demo 프로젝트와 비교해보았습니다.
뭔가 차이가 없어 보입니다. 딱 하나, pom.xml 파일의 변경점이 1 개에서 2 개로 늘어난 것 뿐입니다.
파일에서 변경된 것이 무엇인지 확인해보겠습니다.
기존의 spring-boot-starter-web 이 추가된 것 외에 Lombok 관련 의존성 내용이 추가되었습니다.
Web 와 Lombok 이 추가된 Maven 의 의존성 전체 내용은 아래와 같습니다.
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
즉, SPRING INITIALIZR 에서 선택한 의존성은 Spring Boot 에서 제공하는 라이브러리이건 외부에서 제공하는 것이건 Maven 저장소를 이용해서 내려받을 수 있도록 설정 정보를 추가됩니다. 그리고 Maven 혹은 Gradle 에서 필요한 라이브러리를 다운로드 받아서 프로젝트를 실행할 수 있도록 구성하게 되는 것입니다.