ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [To-Do 앱]스프링부트(SpringBoot) 웹 어플리케이션
    웹 어플리케이션 2019. 2. 20. 15:40

    이 카테고리에서는 스프링 부트, 데이터베이스, HTML, CSS, Javascript를 이용해 웹 상에서 사용 할 수 있는 To Do 웹 앱을 만들고자 한다. 시간이 된다면 스프링 부트 어플리케이션과 Mongo DB를 도커 컨테이너(Docker Container)에 돌리는 방법도 소개하도록 하겠다. 아무튼 이 과정의 첫 걸음으로 이 포스트에서는 Spring Initializer를 이용해 간단히 스프링 부트 어플리케이션을 만드는 방법에 대해 소개하도록 한다.

    예상독자

    • 자바와 이클립스 또는 IntelliJ가 설치되어있다.
    • Gradle이 설치되어 있다. (Gradle 설치)
    • 자바를 좀 안다.

    목표

    • To-Do 앱 프로젝트 구성
    • 스프링 어플리케이션 생성
    • 어플리케이션 구조
    • 실행

    To-Do 앱 프로젝트 구성

    이 프로젝트에서는 스프링 부트 서버, Mongo DB 또는 AWS Dynamo DB, HTML, CSS, Javascript를 이용해 웹 상에서 사용 할 수 있는 To Do 앱을 만들 것이다. 아키텍쳐는 위와 같다. 어플리케이션 서버와 데이터베이스 서버가 있다. 이 두 서버는 같은 컴퓨터에 있을 수도, 다른 컴퓨터에 있을 수도 있다. 중요한 것은 서버 컴퓨터는 유저의 컴퓨터가 아니라는 것이다. 유저는 자신의 브라우저(구글크롬,사파리,등등)를 이용해 http 리퀘스트라는 것을 서버 컴퓨터로 보낸다. http 리퀘스트를 받은 어플리케이션 서버는 요청에 따라 데이터베이스 서버에 쿼리(Query)를 날려 저장된 정보를 가져오거나 아니며 내부적으로 요청을 처리 한 후 http response라는 것을 다시 인터넷 브라우저에 보낸다. 인터넷 브라우저는 이 response를 해석하고 html/javascript 로직에 따라 알맞게 브라우저에 출력한다. 이렇게 유저의 브라우저의 코드(js) + 어플리케이션 서버 + 데이터베이스 서버로 나누어져 있는 어플리케이션의 아키텍처를 3-tier 아키텍쳐라고 부른다.

    이 포스트에서는 이 모든 과정들 중에서도 첫번째로 어플리케이션 서버를 돌리는 작업(중간의 오렌지색 박스)을 먼저 해 보도록 하겠다.

    스프링 어플리케이션 생성

    스프링 어플리케이션 생성은 Spring  Initializer를 이용하면 아주 간단하다. Spring Initializer에 들어가 아래처럼 필요한 artifact들을 추가하고 다운로드 해 보자.

    Dependencies에 원하는 라이브러리들을 검색해서 추가하면된다. 우리는 웹 어플리케이션을 만들 것이므로 Web, JPA(데이터베이스 접근 관련), Lombok(Lombok 사용법) 그리고 DevTools를 추가했다. 'Generate Project'를 누르면 zip형태의 프로젝트가 다운로드된다. 다운로드 되면 이 프로젝트를 압축해제해서 여러분의 workspace 디렉토리에 넣으면 된다.

    Eclipse

    이클립스를 켠 후 File에서 Import ...를 선택한다.

    그러면 프로젝트 유형을 선택하는 창이 나오는데 여기서 Existing Gradle Project를 선택한다. 만약 Existing Gradle Project가 없다면 GradleBuildship이라는 플러그인을 설치해야한다. 최신 이클립스에는 설치되어 나오므로 이클립스 버전을 올리는 방법도 있다.

    그 다음에 나오는 화면에서는 프로젝트의 경로를 지정 해 주어야 한다. 이 경로는 아까 프로젝트를 압축해제한 그 디렉토리의 경로를 넣어주면 된다.

    완료(Finish)를 눌러 프로젝트 불러오기를 마친다.

    IntelliJ

    다음에는 여러분의 IDE에 이 프로젝트를 Import 시킨다. IntelliJ의 경우 다음과 같다.

    이 화면에서 Import Project를 누른다.

    프로젝트 디렉토리가 존재하는 곳에 가 그 디렉토리를 누르고 열기를 누르면 된다. 그러면 이런 창이 뜰 것이다.

    이미 Gradle이 선택되어 있으므로 Finish를 계속 눌러 완료하면 된다.

    어플리케이션 구조

    먼저 어플리케이션의 디렉토리 구조를 보자. 

    처음에 Spring Initializer에서 Gradle  Project를 선택했으므로 Gradle 프로젝트가 생성되었다. 따라서 main과 test로 디렉토리가 나뉘고 기본적인 gradle폴더와 build.gradle이 생겼다.

    build.gradle

    plugins {
    id 'org.springframework.boot' version '2.1.3.RELEASE'
    id 'java'
    }

    apply plugin: 'io.spring.dependency-management'

    group = 'com.fsoftwareengineer'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '1.8'

    repositories {
    mavenCentral()
    }

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

    Spring Initializer에서 Dependencies를 추가했던 것이 기억 나는가? 거기서 디펜던시를 추가했기 때문에 build.gradle에 스프링에 관련된 기본적인 dependencies와 우리가 지정한 jpa, web, lombok, dev-tools이 추가되어 있는 것을 확인 할 수 있다. 다른 것들은 지금 보지 않아도 괜찮다. 

    jpa를 사용하기 위해서는 data source(데이터베이스)를 지정 해 주어야 한다. 우리는 데이터베이스가 없으므로 지금은 일단 jpa부분을 주석처리 하도록 하자.

    package com.fsoftwareengineer.MySpringApp;

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

    @SpringBootApplication
    public class MySpringAppApplication {

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

    }

    이제 MySpringAppApplication을 보자. Sprint Initializer가 기본으로 만들어 준 자바 파일이다. 옛날 Spring과는 다르게 main을 바로 실행 시킬 수 있다. 스프링 부트의 장점이 바로 이것이다. main을 실행시키면 스프링 부트가 embedded tomcat을 자체적으로 실행시킨다. 따라서 우리는 Tomcat을 깔 필요가 없는 것이다!

    실행

    이제 어플리케이션을 실행 해 보자. 어플리케이션을 실행시키는 방법은 아주 간단하다. 그냥 자바 프로그램을 실행시키듯 실행시키면된다. IDE에서 Run을 누르면 바로 실행된다.

    2019-02-19 22:02:45.040 INFO 22838 --- ... Tomcat started on port(s): 8080 (http) with context path ''
    2019-02-19 22:02:45.053 INFO 22838 --- ... Started MySpringAppApplication in 4.755 seconds (JVM running for 5.79)

    위와 같이 뜨면 실행 되는 것이다. 만약 IDE가 아닌 커맨드라인에서 실행시키고 싶다면 아래의 명령어를 이용하면 된다. 프로젝트 디렉토리 내부에서 실행 시켜야 한다는 점을 잊지 말자. (cd C://프로젝트경로)

    gradle bootRun
    또는
    ./gradlew bootRun

    윈도우즈의 경우

    gradlew bootRun

    실행 화면은 다음과 같다.

    Started MySpringAppApplication in 6.599 seconds (JVM running for 8.557)
    <=========----> 75% EXECUTING [46s]

    그러면 이렇게 몇 퍼센트에서 안움직이는 것 처럼 보이는데 이게 다 실행 된 것이다. (실행 중인것.) 8080포트를 확인 해 보자.

    Whitelabel Error Page가 나오면 일단 스프링 부트 웹 서버를 돌리는 데는 성공 한 것이다. 

     이번 포스트를 통해서 스프링 부트 어플리케이션을 생성하고 웹 서버를 실행하는 방법을 설명했다. 다음 포스트에서는 이 웹 서버에 서비스를 생성하고 RESTful API를 만드는 작업에 대해 설명하도록 하겠다. 서비스 생성에 대해 이야기하면서 Coding Best Practice와 Spring의 URL resolution등등 어플리케이션 서버에 관련된 이야기를 더 해 볼 것이다. 데이터베이스는 가장 마지막에 연결 할 것이므로 지금 당장 고민 할 필요는 없다. 


    다음 포스트 : [To-Do 앱] 스프링 부트(Spring Boot) RESTful API - GET


    댓글

f.software engineer @ All Right Reserved