IT 프로젝트/블로그 만들기

[Spring Boot] 스프링 부트 프로젝트/블로그 만들기 - 아키텍처, 개발 환경, 프로젝트 구조

happygram 2018. 11. 10. 20:35

아키텍처


  • Controller Layer : UI 에서 요청을 받고 응답을 전달
  • Service Layer : 비즈니스 로직을 구현
  • Repository Layer : 데이터베이스에서 가져올 쿼리를 구현. JPA를 이용하는 경우 정해진 규칙에 따라서 메소드를 사용하거나, 만들어놓으면 적절한 쿼리를 수행할 수 있습니다.
  • Domain Layer : 실제로 데이터베이스 물리 테이블과 1:1 매핑이 되어 바인딩 되어 있습니다.

Controller 에서는 Service 를 호출해서 받은 결과를 UI 에 전달합니다.

[Service -> Repository -> Domain] 처럼 각각 관련 있는 클래스를 호출하도록 설계합니다.

Service 가 또 다른 Service 를 호출하지 않도록 주의하고, Service 에서 필요한 Repository 에 접근하여, 데이터를 가져올 수 있도록 합니다.


개발 환경


IDE

Eclipse Oxygen


Framework

Spring Boot 2.0.6

- Tomcat

- JPA (Java Pesistance API)

- lombok


Template Engine

Thymeleaf


Javasript

jQuery


UI

Bootstrap & Bootstrap LTE


Database

MySQL 5.7



프로젝트 구조



blog : 최상위 프로젝트.

src.main.java : java 클래스 파일 모음.

project.blog : 최상위 패키지.

project.blog.common : 공통 클래스 모음. (유틸리티, 상수 등)

project.blog.config : 설정 클래스 모음. (Web Security, Controller Advice 등)

project.blog.controller : 컨트롤러 클래스 모음.

project.blog.domain : 도메인 클래스 모음. 데이터베이스 테이블과 실제로 1:1 매핑되어 정확하게 관리.

project.blog.dto : Input, Output 클래스 모음. domain 클래스와 비슷할 수 있지만, View 와 인터페이스 하기 위한 클래스.

project.blog.repository : 데이터베이스 접근하는 클래스 모음. DAO(Data Access Object) 와 비슷한 개념으로 JPA 를 사용한 클래스.

project.blog.service : 비즈니스 혹은 사용자 로직을 구현한 클래스. 비즈니스와 연관있는 로직을 표현.

project.blog.BlogApplication.java : Spring Boot 실행 클래스.

src.test.java : java 테스트를 위한 클래스 파일 모음.

src.main.resources : 프로젝트에 필요한 리소스 파일 모음. HTML, javascript, image, css, third party library 등을 관리.

template : HTML 파일 모음.

static : 정적 자원들 모음. javascript, image, css, third party library 를 위치.

application.yml : Spring Boot 설정 파일. 실행 포트, Datasource 등을 지정.

build.gradle : 프로젝트 Version, Dependency 등을 설정

init.mysql.sql : MySQL 버전의 초기 로딩 DDL 파일.