RATSENO

[SpringBoot]SpringBoot 프로젝트 생성 본문

DEV/SPRING

[SpringBoot]SpringBoot 프로젝트 생성

RATSENO 2020. 2. 19. 13:59

SpringBoot프로젝트를 생성하는 방법은 크게 두가지가 있습니다.

maven프로젝트로 생성하여 dependency에 SpringBoot를 추가하는 방법과

Spring initializr를 이용하여 프로젝트를 import하는 방법입니다. 

이 두가지 방법에 대해서 알아보겠습니다.


Maven프로젝트로 SpringBoot프로젝트 시작하기

먼저 maven 프로젝트로 시작하는 방법부터 알아보겠습니다. 

ide는 무엇이든 상관없지만 저는 intellij community로 생성해보겠습니다.

intellij를 처음 설치하시고 프로젝트를 생성하실 때는 위의 모습과는 다를것이지만

맥락은 같습니다. new project 가 보일경우 클릭합니다.

 

화면 좌측에서 Maven 프로젝트를 선택합니다.

(intellij ultimate를 사용하시는 분들은 화면 좌측에 추가로 Spring boot로 프로젝트를 생성할 수 있는 기능을 제공합니다.)

 

다음으로 넘어와서 project의 정보를 입력합니다.

Name, Location, ArtifactId를 작성하고 finish를 클릭합니다.

 

생성된 Maven프로젝트의 구조와 pom.xml입니다.

Spring Boot프로젝트로 사용하기 위해 pom.xml에 SpringBoot와 관련된 내용을 작성합니다.

 

<?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>org.example.ratseno</groupId>
    <artifactId>spring-boot-started</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
    </parent>

    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- Package as an executable jar -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

수정된 pom.xml을 보면 <parent></parent>, <dependencies></dependencies>, <build></build>

추가된것을 볼수있습니다.

 

- <parent></parent>

이름에서 알수있듯이 부모격에 pom.xml을 상속받는다는 의미입니다.

해당 태그내부의 <artifactId>spring-boot-starter-parent</artifactId>를 intellij 기준으로

Ctrl를 누르고 클릭하면 spring-boot-starter-parent-[버젼정보].pom.xml로 이동하게됩니다.

이 pox.xml에 <parent></parent><artifactId>spring-boot-dependencies</artifactId>로 이동하게되면 

spring-boot-dependencies-[버젼정보].pom.xml로 이동하게됩니다.

해당 파일들을 살펴보면 spring framework에서 많이 사용되는 dependency들이 이미 작성되어있는 것을 알수 있습니다. 

 

- <dependencies></dependencies>

해당 application에서 의존성 관리가 필요할 내용들을 작성합니다.

이번 예제에서는 web application을 위해 가장 기본이 되는 spring-boot-starter-web을 추가합니다.

이미 spring-boot-dependencies-[버젼정보].pom.xml 에 해당 depenecy가 아래와 같이 버젼까지

명시되어 관리되고 있습니다.

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.2.4.RELEASE</version>
      </dependency>

이 때문에 pom.xml에 <version></version>을 명시하지 않아도 위의 버젼으로 가져오게됩니다.

 

 

-<build></build>

해당 application을 buil할 때 사용될 plugin들을 작성합니다.

 

 

이제 application의 main 클래스를 작성하겠습니다. 보통 (프로젝트명)Application으로 명명하여 생성합니다.

여기서는 간단하게 Application이라는 이름으로 생성하겠습니다.

먼저 패키지를 생성하겠습니다. com.example.ratseno의 구조로 패키지를 생성하겠습니다.

 

 

 

유의할 점은  사용될 프로젝트 패키지에서 가장 상위패키지에 생성해야된다는 것입니다.

그 이유는 바로 금방 설명드리겠습니다.

package com.exmaple.ratseno;

public class Application {

}

 

이렇게 생성된 파일에 추가적인 내용을 작성하겠습니다.

pom.xml을 먼저 작성하였기 때문에 Spring관련 어노테이션을 사용할수 있습니다.

클래스 상단에  @SpringBootApplication를 작성합니다.

package com.exmaple.ratseno;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

}

 

@SpringBootAppication 어노테이션을 작성하게 되면 해당 클래스는 main클래스로의 기능을 수행하게 됩니다.

해당 어노테이션을 확인해보면 여러가지 설정 어노테이션이 있습니다.

여기중 @ComponentScan 어노테이션은 해당 어노테이션이 있는 클래스의 패키지 하위를 탐색하여

Bean들을 등록하는 것입니다. 이 이유 때문에 main 클래스가 될 파일을 프로젝트에서 사용할 패키지의 가장 상위에 위치시키는 이유 입니다. 만약 java패키지 밑에 존재할 경우 모오오오오오오든 패키지를 탐색하게 되는 일이 발생합니다.

 

 

 

다음으로 main메서드를 작성합니다.

package com.exmaple.ratseno;
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);
    }
}

intellij 기준으로 psvm을 입력하고 자동완성으로 간단하게 main()을 만들수 있습니다.

 

이게 끝입니다. 이제 project를 run()하고 spring boot의 기본 포트인 localhost:8080으로 접속해 봅시다.

기존의 Spring framework를 사용 시 추가로 tomcat을 설치하여 서버를 뛰었지만,

Spring Boot는 tomcat이 내장되어 있기때문에 자체적으로 서버를 뛰울수 있습니다.

log를 확인하게 되면 8080포트로 서버가 정상적으로 올라간것을 확인할 수 있고

Error Page가 뜨게 되지만 현재 기준으로 정상적인 모습니다.


Spring initializr로 SpringBoot 프로젝트 시작하기

더 간단하게 SpringBoot프로젝트를 생성해보겠습니다.

 

https://start.spring.io/

위의 링크로 들어가보겠습니다.

이러한 화면을 확인하실수 있습니다.

- Maven Project로 생성할것이기 때문에 Maven을 선택

 

Proeject Metadata항목에 프로젝트명과 ArtifactId를 작성합니다.

 

Dependencies항목에서 프로젝트에서 사용할 dependency를 선택합니다.

그리고 이제 generate 버튼을 클릭하게되면 zip파일을 다운로드 받습니다.

 

zip파일을 압축해제 후 해제된 폴더를 ide로 open 합니다.

 

프로젝트를 확인해보면 알수있듯이 Maven 프로젝트로 시작하여 

pom.xml에 SpringBoot 관련 dependency를 추가하는것 부터

main 클래스를 작성할 필요없이 동일하게 이미 작성이 되어 있는것을 확인할 수 있습니다.

같은 방법으로 application run()을 하고 localhost:8080 로 접속하면 정상 동작됩니다.

 

Spring Boot프로젝트를 생성하는 두가지 방법에 대해서 알아보았습니다.

Spring Boot 공식 문서를 보시면 여러가지 방법으로 프로젝트를 생성하는 방법을 알수있습니다.

https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#boot-documentation-first-steps

 

Spring Boot Reference Guide

This section dives into the details of Spring Boot. Here you can learn about the key features that you may want to use and customize. If you have not already done so, you might want to read the "Part II, “Getting Started”" and "Part III, “Using Spring Boot

docs.spring.io

 

Comments