본문으로 바로가기

IntelliJ IDEA에서 Spring Boot Application을 세팅하는 방법을 포스팅 합니다. 본 글에서 사용한 인텔리제이 IDE 버전은 IntelliJ IDEA 2020.3 (Ultimate Edition) Build #IU-203.5981.155, built on December 1, 2020 입니다. 

 

1. 이번 예제에서는 프로젝트내 모듈로 스프링부트 Application을 올려보도록 하겠습니다. 인텔리제이를 실행하시고 Projects > NEW PROJECT를 눌러주세요. 

 

2. Empty Project를 선택하여 생성해 주세요.

 

3. 빈 프로젝트 생성이 완료되면 바로 Project Structrue 메뉴가 뜨게 됩니다. 여기서 좌측 Modules > Add(+) > New Module 을 선택하여 스프링부트 모듈을 생성해 보도록 하겠습니다. 

 

4. 좌측  Spring Initializr 탭 선택 후 원하는 SDK 버전을 선택해 주세요. spriing starter service URL은 네트워크가 연결되어 있다면 기본 설정인 https://start.spring.io 로 두고 다음 단계로 넘어가 주시면 됩니다. 

 

5. Spring Initializr Project Settings 메뉴에서 원하는 형태의 스프링 프로젝트를 세팅 할 수 있습니다.

Group과 Artifact명을 적절하게 기재해 주시고  빌드 도구는 Maven / Gradle, 언어는 Java, Kotlin, Groovy 중 Maven, Java를 선택하도록 하겠습니다. 

패키징은 Jar와 War중 선택이 가능한데 Jar를 선택하면 스프링부트 내장톰캣(Embeded Tomcat)을 사용하여 Stand Alone으로 WAS를 구동시킬 수 있습니다. 외부 WAS에 Deploy해서 사용하는 환경이시라면 War를 선택하여 내보내시면 됩니다. 

 

6. 다음은 프로젝트 의존성(Dependencies)를 선택하는 단계입니다. 필요한 의존성을 선택하면 Maven/Gradle의 pom.xml이나 build.gradle 설정 파일에 자동으로 항목이 추가되고 레파지토리에서 내려받게 됩니다. 물론 추후 따로 추가하여 내려받는 것도 가능하므로 일단 생각나는 것만 먼저 추가해 주시면 됩니다!

 

7. 마지막으로 Module의 이름과 root 경로를 지정해 주세요.

 

8. 스프링부트 프로젝트(모듈)이 추가된 것을 확인하실 수 있습니다. 모듈 Language level을 선택했던 jdk버전과 맞춰주고 OK를 눌러 생성된 프로젝트 구조를 살펴보겠습니다.

 

9. 생성된 스프링부트 프로젝트(모듈)의 구조입니다. 주요 파일로는 스프링부트 컨테이너를 실행시키기 위한 src폴더내의 main Class가 있고  resources폴더 아래는 web모듈을 선택했기 때문에 html, css, js등의 정적컨텐츠가 위치할 static 폴더가 자동으로 생성됐으며 여러가지 설정정보를 위한 application.properties 파일도 생성되었습니다.

그리고 아까 빌드도구로 선택했던 Maven을 위한 설정파일인 pom.xml과 선택했던 라이브러리의 의존성 설정들이 자동으로 추가되어 프로젝트로 내려받아 진 것을 확인 하실 수 있습니다.

 

10. 내장톰캣을 사용하는 Jar로 패키징을 선택했기 때문에 별도 설정 없이 바로 스프링부트 어플리케이션을 실행해 보도록 하겠습니다. Build Project(⌘+F9) 후 메인 클래스 옆의 실행버튼이나 상단 실행버튼(^+R)을 눌러 실행해 주세요. 

한 번에 쨘 하고 되면 좋겠지만 실행해보면 아래와 같은 오류가 발생 합니다.

***************************
APPLICATION FAILED TO START
***************************

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

Action:
Consider the following:
    If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

메시지를 보면 의존성주입 단계에 선택했던 Maria DB에 대한 DataSource(설정정보)가 application.properties에 정의 되지 않아 구동단계에서 설정할 수 없어 발생하는 오류입니다. 

 

11. 적절한 DB 데이터 소스 정보를 입력해 주셔서 정상적으로 설정을 로드할 수 있도록 하셔도 되고, 본 프로젝트에서는 일단 어노테이션을 통해 Auto Configuration에서 DataSource 관련 설정 로드를 WAS 구동시 하지 않도록 exclude 하도록 하겠습니다.

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

12. 빌드 후 다시 실행해 보면 WAS가 정상적으로 구동 된 것을 확인 하실 수 있습니다. 

 

13. index.html 파일을 생성하여 직접 브라우저에서 localhost에 기본포트인 8080로 떠있는 WAS에 요청하여 웹페이지를 띄워보도록 하겠습니다. spring-boot-starter-web 의존성을 선택하여 자동으로 생성됐던 정적리소스 관리 폴더인 static 폴더 아래 index.html파일을 생성해 주시기 바랍니다.

혹시 의존성 Spring Web 의존성 추가를 안하신 분들은 Dependency를 추가후 static 폴더를 만들어 주시면 됩니다. 

 

14. 브라우저에서 https://localhost:8080 에 접속해 보시면 WAS에 있는 index.html 페이지가 뜨는 것을 확인하실 수 있습니다.