[Spring Boot #1] 인텔리제이(IntelliJ)로 스프링 부트 프로젝트 시작하기

| 스프링 부트(Spring Boot)란?


스프링 부트(Spring Boot)는 스프링 프레임워크 기반 어플리케이션을 더 빠르고 쉽게 개발할 수 있게 해주는 오픈소스 프로젝트입니다. 스프링 프레임워크만으로 개발할 때보다 간단한 설정만으로도 쉽게 웹 어플리케이션을 제작할 수 있습니다.


| 인텔리제이(IntelliJ) IDE


인텔리제이(IntelliJ)JetBrain사에서 개발한 자바 IDE입니다. 기존의 이클립스(Eclipse) IDE보다 여러 면에서 월등하다고 평가받고 있는 IDE이며 유료 구독 버전인 Ultimate 버전과 무료 버전인 Community 버전을 사용할 수 있습니다. 


아래는 인텔리제이 커뮤니티 버전을 받을 수 있는 사이트입니다.


https://www.jetbrains.com/idea/


| 인텔리제이(IntelliJ)를 통한 스프링 부트 프로젝트 만들기


인텔리제이 Community 버전을 기준으로 스프링 부트를 만드는 법을 설명하도록 하겠습니다. 


인텔리제이를 설치하고 나면 Tool바File => Project를 누릅니다.



Maven를 클릭합니다.


Maven 프로젝트의 그룹명과 아티팩트명을 써줍니다.



프로젝트명을 씁니다.


다음과 같이 Maven 프로젝트가 만들어 졌습니다. 



Maven 프로젝트의 pom.xml에 다음과 같은 의존성을 추가합니다. 아래는 스프링 부트를 가동할 수 있는 의존성을 추가한 상태입니다.


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.tutorial</groupId>
<artifactId>springboot-tutorial</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>


다음과 같이 프로젝트 구조를 만듭니다.



Application.java의 코드는 다음과 같습니다.

package com.tutorial.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

아래와 같이 Run 'Application'을 클릭합니다.



다음과 같이 콘솔창에서 실행되는 것을 알 수 있습니다.

.   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.1.RELEASE)

2018-12-21 20:46:36.097 INFO 10656 --- [ main] com.tutorial.springboot.Application : Starting Application on USER-PC with PID 10656 (C:\Users\user\spring\springboottutorial\target\classes started by user in C:\Users\user\spring\springboottutorial)
2018-12-21 20:46:36.101 INFO 10656 --- [ main] com.tutorial.springboot.Application : No active profile set, falling back to default profiles: default
2018-12-21 20:46:37.662 INFO 10656 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2018-12-21 20:46:37.700 INFO 10656 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-12-21 20:46:37.700 INFO 10656 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/9.0.13
2018-12-21 20:46:37.715 INFO 10656 --- [ main] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk1.8.0_131\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\oraclexe\app\oracle\product\11.2.0\server\bin;;C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files\Java\jdk1.8.0_131\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files (x86)\Dev-Cpp\MinGW64\bin;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\PuTTY\;C:\Program Files\apache-maven-3.5.0\bin;C:\Users\user\.m2\repository\org\apache\maven\apache-maven-3.5.0-bin\apache-maven-3.5.0\bin;C:\Program Files\Microsoft SQL Server Migration Assistant for Access\bin\;C:\Program Files\Microsoft SQL Server Migration Assistant for MySQL\bin\;C:\Program Files\dotnet\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Program Files\Amazon\AWSCLI\;C:\WINDOWS\System32\OpenSSH\;D:\gradle\bin;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\maven\bin;C:\Program Files (x86)\Common Files\Adobe\AGL;C:\Users\user\Anaconda3;C:\Users\user\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Bandizip\;;C:\Program Files\Microsoft VS Code\bin;C:\Users\user\AppData\Roaming\npm;C:\Users\user\AppData\Local\Programs\Microsoft VS Code\bin;.]
2018-12-21 20:46:37.861 INFO 10656 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2018-12-21 20:46:37.861 INFO 10656 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1662 ms
2018-12-21 20:46:38.127 INFO 10656 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2018-12-21 20:46:38.324 INFO 10656 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2018-12-21 20:46:38.328 INFO 10656 --- [ main] com.tutorial.springboot.Application : Started Application in 2.933 seconds (JVM running for 4.486)

스프링 부트는 maven을 통해 빌드하면 jar 파일 하나가 생성됩니다. 이 jar파일을 실행시키면 스프링 부트가 위와 같이 실행되는 것을 볼 수 있습니다. 단순히 스프링 프레임워크만을 써서 개발을 했을 경우에는 톰캣(Tomcat)과 연동하여 war 파일을 만들어서 실행해야 했지만 스프링부트는 스프링부트 안에 자체적으로 톰캣이 내장되어 있어 그럴 필요 없이 바로 jar 파일 하나만 실행하면 웹 어플리케이션을 가동할 수 있습니다.


아래와 같이 Maven 명령어를 쳐서 패키징을 합니다.


아래와 같이 발드 및 패키지가 자동적으로 실행됩니다.


다음 아래와 같이 명령어를 쳐서 위에서 생성된 스프링 부트 jar파일을 실행합니다.


아래와 같이 스프링부트가 실행되는 것을 볼 수 있습니다.

2018-12-21 21:26:18.939  INFO 552 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2018-12-21 21:26:18.940 INFO 552 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1422 ms
2018-12-21 21:26:19.187 INFO 552 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2018-12-21 21:26:19.394 INFO 552 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2018-12-21 21:26:19.397 INFO 552 --- [ main] com.tutorial.springboot.Application : Started Application in 2.333 seconds (JVM running for 2.747)


참고자료 : https://www.inflearn.com/course/스프링부트


이 글을 공유하기

댓글(6)

  • LeeMark
    2019.10.17 16:48

    저는 왜 패키징이 안 될까요?
    zsh: command not found: mvn
    맥OS 사용중입니다

    • 2019.10.17 23:03 신고

      댓글 달아주셔서 감사합니다 ㅠㅠ

      이렇게 한 번 해보세요~ (stackoverflow 참고했습니다)

      1. 아래 명령어를 쳐서 .zshrc 파일을 만들거나 열어야 합니다.

      vim ~/.zshrc

      2. 파일 맨 끝에다 다음 문구를 추가합니다.
      source ~/.bash_profile;

      3. 터미널을 껐다가 키거나 터미널에 위의 문구를 다시 입력해 봅니다.
      source ~/.bash_profile;

  • jys
    2019.11.04 11:03

    mvn package 할 때 target에서 하셨는데 이유가 있나요?
    그렇게 하니까 target 폴더에는 pom.xml이 없어서 에러가 나서요

    • 2019.11.06 09:07 신고

      안녕하세요! 댓글 달아주셔서 감사합니다.

      pom.xml은 프로젝트 루트 디렉터리에 있는 maven 설정 파일입니다. 보통 루트 디렉터리에서 mvn package를 입력하시는 게 맞습니다!

      여기에서는 제 pc에서 따로 설정되있는 것이 있어 된 것 같네요

  • 스프링부트
    2019.12.10 11:20

    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
    </parent>
    이게 not found가 뜨는데 왜그런가요

    • 2019.12.10 13:50 신고

      maven 저장소에서 해당 라이브러리 (spring-boot-starter-parent)를 제대로 다운 받지못해서 그렇습니다.

      보통 maven 중앙 저장소에 제대로 접속하지 못해서일 가능성이 큽니다. (네트워크 연결 문제)

      컴퓨터에 네트워크가 제대로 연결되어 있는지 혹시 프록시를 통해 연결되는 네트워크라면 해당 프록시때문에 막혀있는지 체크해주시면 감사하겠습니다!

Designed by JB FACTORY