[Spring Boot] Spring Initializr를 이용하여 프로젝트 생성하기(Intellij)

 

 

기존에 STS(Spring Tool Suite)나 Eclipse 툴 안에서 Maven이나 Gradle로 프로젝트를 생성했던 경험이 있는데 Spring Initializr 웹 도구를 사용해서 스프링 프로젝트를 만들 수 있다.

(개인적으로 이 방법이 더 편한것 같다.)

 

https://start.spring.io/

 

해당 사이트에 접속하게되면

 

 

이런 화면이 나오는데 차례대로 설정할 부분이 있다.

 

- project

Maven인지 Gradle인지 선택한다. 해당 항목은 프로젝트의 의존성을 관리한다. 과거에는 Maven을 많이 사용했지만 Maven은 xml 태그 형식이라 의존이 많아질수록 코드가 길어지기도 하고 요새는 Gradle을 많이 쓰는것 같아 Gradle로 설정했다.

 

 

- Language

Spring 프레임워크를 통한 Java 웹 개발을 할 것이기 때문에 Java 를 선택한다. Kotlin은 안드로이드 앱 개발에 사용하는 언어이며 Groovy는 Java 에 Python, Ruby, Smalltalk 등의 특징을 더한 동적 객체 지향 프로그래밍 언어이다.

 

(나중에 접해볼 수 있는 기회가 있으면 보면 좋을것 같다.)

 

 

- SpringBoot

해당 프로젝트의 버전을 설정한다. SNAPSHOT이 붙은 건 현재 개발중인 버전이며, M 또한 정상화하여 정식 릴리즈 된 버전이 아니기 때문에 버전만 명시된것을 선택한다.

 

 

- Project Metadata

해당 프로젝트의 이름과 특징을 입력하면 된다. 보통 Group과 Artifact/Name 을 .으로 연결한 값이 패키지이름이 되며 Artifact를 입력하면 Name도 같은 내용으로 등록된다. (개인 프로젝트라면 자유롭게 등록하면 될 듯하다.)

 

Pakaging에는 Jar와 War가 있는데

 

Jar는 자바 어플리케이션이 동작할 수 있도록 프로젝트를 압축한 파일(Class, Java리소스, 라이브러리 등)이며 폴더 구조 등이 자유롭고 JRE로 실행가능하다.

 

War는 서블릿이나 jsp에 배치 할 수 있는 웹 어플리케이션 압축 파일(servlet, jsp, jar, class, xml, html 등)이며 정형화 된 구조를 사용(WEB-INF, META-INF 등)하고 실행 하려면 WEB서버(Apache)나 WAS서버(Tomcat) 등이 필요하다.

 

...

 

현재 회사에서는 프로젝트를 할 때 운영서버에 웹서버, WAS 서버를 설치하고 리소스 파일을 옮기고 난 후, WAS 서버를 리부팅하는 형식으로 작업을 하고있다.

 

하지만 스프링부트는 내장 서버를 제공하고있고 서버 기동 시, 콘솔 창에서 해당 프로젝트 파일을 빌드하여 서버를 부팅시킬 수 있기때문에 Jar을 선택하자.

(빌드 하는 방법도 추후에 정리해야겠다.)

 

 

JAVA 버전은 이클립스를 쓰면서 원래 8버전을 사용했지만 개발자들 사이에서 핫하다는 인텔리제이를 접하게 되면서 11 버전을 사용하게 되었다.

 

(아직 무료버전 사용중.......)

 

추후 이직하게되거나 본격적으로 툴을 사용하게 된다면 정식 버전을 사용할것 같다.

 

 

- Dependencies

ADD DEPENDENCIES를 클릭하여 생성할 프로젝트의 의존성을 추가한다. 추후에 maven이나 gradle로 추가 할 수 있다.

* Spring Web

  • 스프링을 이용하여 웹개발을 하려면 필요한 의존성이다. MVC패턴을 사용하여 RESTful을 포함한 웹 개발이 가능하며 WEB서버 WAS를 기본 포함 컨테이너로 사용한다.

 

* Lombok

  • 어노테이션을 사용하여 반복되는 상용구 코드를 줄일 수 있다. (ex. getter, setter, constructor 등) 여러가지 기능이 있겠지만 일단 엔티티 설계할때 코드를 많이 줄일 수 있을것 같다.

 

* Thymeleaf

  • 자바 템플릿엔진으로써 스프링에서 지향하는 템플릿엔진이다. 기존 jsp보다 속도가 빠르고 확장자 명이 .jsp가 아닌 .html이기 때문에 다른 WAS서버 없이 브라우저에서 정적으로 표기가 가능하다. 

 

Spring Data JPA

  • JPA를 통해서 DB에 데이터를 관리, 유지하는데 기존 JPA의 기능을 좀 더 효율적으로 사용할 수 있다. 아직 사용 안해봤지만 추후에 자주 이용하게 될것 같다.

 

이제 Generate를 클릭하면 zip파일이 생성되고 해당 파일의 압축을 풀면 아래와 같은 파일이 나온다..

 

 

툴은 인텔리제이를 사용한다.

 

https://www.jetbrains.com/ko-kr/idea/download

 

다운로드 IntelliJ IDEA: 우수성과 인체 공학이 담긴 JetBrains Java IDE

 

www.jetbrains.com

초기화면

(프로젝트를 빌드하기전에....)

 

메뉴에서 File - settings - 검색: plugin

 

화면에서는 이미 install했지만 추후 JPA와 Lombok을 사용할거니까 marketplace에서 lombok과 JPA BUddy를 검색하여 install한다.

 

시작 메뉴의 File - Open에서 프로젝트를 지정한 경로의 "build.gradle" 파일을 선택한다.

 

 

....짓는중....

빌드가 성공적으로 완료되면 해당경로에 있는 클래스안의 메인메서드를 실행하면 서버가 올라간다.

 

끝 !


인줄 알았는데

********************************************* 추가 **********************************************

프로젝트 파일을 Generate할 때 Spring Data JPA를 dependency에 추가했는데 JPA를 사용 할 데이터베이스를 설정해주지 않았기 때문에 하위의 오류가 발생한다.

 

"

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class

 

"


{해당 프로젝트 디렉토리} - build.gradle 클릭

dependencies {
//	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

해당 디펜던시를 주석처리 한다.

 

 

추가로 인텔리제이에서 설정해야할 사항이 있다. (안 맞으면 오류가 뜨는경우가 있음...)


Gradle

메뉴에서 File - settings - 검색: gradle

 

1) Settings에서 Download external annotations for dependencies를 체크하고 Build and run suing과 Run tests using을 Gradle -> IntelliJ IDEA로 변경한다.

 

2) Gradle JVM을 환경변수에 등록한 경로의 JDK버전을 프로젝트와 맞는 버전으로 등록한다.

 


성공 !

 

진짜 끝 !

+ Recent posts