이 글은 비슷한 프로젝트를 만들다 고민에 빠졌거나, 나 역시 기억하지 못할 수도 있는 내용을 정리하기 위한 글이다..★

 

별도의 DB 설정없이 구동되는 프로젝트는 이전에 "AWS로 Spring 웹페이지 배포하기"라는 카테고리로 프로젝트 만드는 방법과 AWS 배포를 순서대로 적었었다. 아래 링크를 통해 구체적인 프로젝트 과정을 살펴볼 수 있다.

본 예약프로그램 프로젝트 만들기에서는 앞서 만든 프로젝트 작성 및 배포 순서와 겹치는 내용을 제외하고 설명한 부분이 많으므로 잘 모르겠다면 먼저 살펴보는 것을 추천한다.

 

2021.07.22 - [Project/AWS로 Spring 웹페이지 배포하기] - Spring intializr(Gradle), IntelliJ, AWS EC2를 이용한 동적 웹페이지 만들기 - 0단계 프로젝트 개요

 


이번 프로젝트 역시 비슷한 개발환경을 이용했다. 이번 프로젝트의 전체 개요를 Step1.에서 다루고자 한다.

 

프로젝트 개발환경

  • OS: Window10
  • IDE: IntelliJ IDEX 2021.1.2 x64
  • Language: Java 8, HTML5,CSS3, JS
  • Middleware: Tomcat9, Apache2
  • Framework: Spring Gradle
  • DB: MariaDB Server 10.6.5

프로젝트 배포환경

  • OS: AWS EC2 Ubuntu 20.04
  • DB: AWS RDS MariaDB 10.5.1

1. 프로젝트 구성

이번 프로젝트에서는 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 라는 도서를 읽고 독학한 내용을 프로젝트에 활용했다. 일단 책에서 내용처럼 나도 entity를 이용해서 repository와 연동할 수 있게 하고, dto는 따로 분리해서 사용할 수 있도록 structure를 만들었다. 이번 프로젝트의 구성은 다음과 사진과 같다.

domain은 entity와 repository를 담은 디렉토리이고, web단에 controller와 dto 하위 디렉토리로 구성되어 있다. 

 

현재 프로젝트 구성


2. build.gradle dependencies

이번 프로젝트에서 필요했던 dependencies는 다음과 같다.

 

간략하게 설명하자면, thymeleaf는 템플릿 엔진으로 레이아웃과 변수처리 등에 요긴하게 사용했던 부분이다. thymeleaf에 문법에 대해서는 찾아보면서 만들기는 했지만 나중에 한 번 정리하면서 봐도 좋을 것 같다.

 

spring web 프로젝트에 필요한 spring-boot-starter-web, JPA 사용을 위한 spring-boot-starter-data-jpa, 인터셉트로 로그인 설정시 그리고 배포시에 필요했던 spring-boot-starter-security를 추가했다.

 

lombok은 @ 어노테이션 처리를 간편하게 해주는 것으로 매번 getter, setter 설정을 피하게 해준다. 즉, 코드 작성이 확실히 줄어든다.

 

ajax로 json dataType을 받는 것을 위해 json-simple을 사용했고, DB를 위한 mariadb-java-client, 기본 톰캣 구동을 위한 spring-boot-starter-tomcat, 테스트코드 작성을 위한 spring-boot-starter-test가 있다. 

 

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect', version: '2.4.1'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.projectlombok:lombok'
    annotationProcessor('org.projectlombok:lombok')
    implementation 'com.googlecode.json-simple:json-simple:1.1.1'
    runtimeOnly 'org.mariadb.jdbc:mariadb-java-client:2.1.2'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

3. application.properties

이번 프로젝트에 application.properties 구성은 다음 코드블럭과 같다.

 

먼저, mariadb 드라이버 설정한다.

 

localhost에 session을 연결을 위한 포트번호(나의 경우는 3307)/데이터베이스명을 url로 연결한다. 기본 포트번호는 3306인데 이미 사용중이라 처음 설치시에 3307로 설치했다.
이 경우, 나중에 배포시 신경써서 3306인 application.properties로 배포해야 한다.

 

생성시 만든 username과 비밀번호를 등록해주고, 구동시 sql 쿼리문이 잘 들어가는지 확인을 위해 show-sql을 true로 설정했다.

 

spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3307/report
spring.datasource.username=root
spring.datasource.password=****
spring.jpa.show-sql=true

프로젝트에 대한 구조적 개요는 마무리가 된 것 같고, 다음에는 AWS RDS를 EC2에 연결하는 것을 기록할 예정이다.

댓글