신규 프로젝트 생성>Spring Initializr를 통해 스프링 프로젝트 생성 마법사를 활용 할 수 있다.
이를 통해 초기 프로젝트 생성 시 기본적인 프로젝트 이름, 메인 언어, JDK 버전 등을 선택 할 수 있다.
•
프로젝트 이름과 폴더를 지정하고
•
메인 언어는 Java를 선택
•
JDK는 Homebrew 17버전을 선택했다.
추가적으로 필요한 라이브러리, 모듈 등 의존성(Dependencies)를 를 쉽게 찾고 자동으로 입력 해주는 역할을 한다. 원하는 라이브러리를 선택하여 추가 할 수 있고, 생성 시 기본적인 Spring Framework 라이브러리, 모듈등이 설치됨과 함께 추가된 Spring Web, Lombok의 라이브러리들도 설치되게 된다.
Dependency Injection에 대한 추가 공부
•
dependency란?
◦
어떤 클래스 A가 다른 클래스(또는 인터페이스)B를 이용할 때 A가 B에 의존한다고 한다.
•
그럼 현재 프로젝트 생성에서 Dependencies를 설정한다는 의미는?
◦
Dependency Injection(DI) 의존성을 주입한다는 것이다.
◦
이는 프로그래밍에서 구성요소간 의존 관계가 소스코드 내부가 아닌 외부의 설정 파일 등을 통해 정의되도록 하는 디자인 패턴 중 하나.
◦
따라서 현재 Spring Web, Lombok 의존성을 주입하는데, 외부 링크 등을 통해서 해당 라이브러리를 참조하게 될 것이다.(실제로 다운로드가 발생 된다.)
◦
이를 통해 해당 프로젝트에서는 외부 라이브러리의 기능을 사용 할 수 있다.
그럼 내가 추가한 lombok, Spring Web 등 dependencies는 어디서 기록될까?
위 프로젝트 생성 마법사는 사실 GUI로 구성된 도움이다. 실제로 어디선가 외부 dependencies의 경로를 설정해 둔 곳이 있을 것인데, 이전 Eclipese로 할 때 기억나는 것은 pom.xml이었다. 지금은 어디서 그 설정을 하고있을까 궁금했다.
찾아본 결과 위 GUI 환경에서 의존성 주입을 선택하는 행위자체는 build.gradle이라는 빌드 툴 설정 파일에서 관리되고 있었다. pom.xml 은 이전에 사용했던 Eclipse에서 프로젝트가 빌드 툴을 Maven을 사용했기 때문에 Maven은 pom.xml 파일에서 의존성을 관리하던 것이다.
내가 원하는 외부 라이브러리들은 아래 경로에서 찾아왔었다.
그럼 Maven을 사용할 경우 pom.xml 의 의존성을 주입이 필요 할 때, 위 페이지에서 코드를 복사했왔었는데 gradle은 어디서 찾을 수 있을까? 팀원과의 소통을 통해서 찾아보던 결과 해당 페이지에서 gradle 탭이 존재하는 것을 확인했다.
Json 라이브러리를 추가하고 싶다고 가정 했을 때,
아래는 과거 Maven 빌드 툴을 사용 할 때, Maven에서 의존성 주입 할 때 pom.xml에 <dependencies> … <dependencies/> 태그 내부에 넣던 코드이다.
아래는 현재 Gradle 빌드 툴을 사용하고 있으며 의존성 주입 할 때 build.gradle에 dependencies { … } 코드 내에 삽입할 코드이다.
실제로 해당 코드를 복사하여 build.gradle 에 추가해보고 해당 외부 라이브러리가 프로젝트에 추가되는지 살펴봤다.
소스코드를 입력하고 저장하자마자 해당 라이브러리가 자동적으로 다운로드되고, 결과 GUI툴에서도 내가 원하는json:20160810 버전의 라이브러리가 추가 되는 것을 확인 할 수 있었다.
추가적인 기능으로 ‘Auto Import’를 활성화 시켜서 앞으로 어떠한 클래스, 라이브러리 등을 작성 하면 자동으로 import java.util.*; 처럼 대상 기능 또는 메소드, 클래스 등에 대한 임포트문이 자동으로 생성 될 것이다. 하지만 자동이기 때문에 혹시나 잘못된(그럴일은 별로 없겠지만)으로 오류가 발생할수도 있으니 인지하고 있어야 한다.