들어가기에 앞서, 프로젝트 경험이 전무한 주니어 개발자들은 자신만의 게시판을 만들곤 합니다. 게시판을 만들기 전, 저는 기존에 경험한 프로젝트에서 사용했지만 제 것으로 만들지 못했던 AWS의
EC2
,RDS
와 Firebase의FCM
을 사용해보기 위해 게시판을 만들었습니다.
또한, 별도의 프론트의 구현이 없고 서버 사이드에서만 개발했습니다. 확인은Swagger
또는Postman
으로 확인할 수 있고 데이터의 송-수신은REST API
를 활용했습니다.
참고용으로 봐주면 감사하겠슴미당!
build.gradle
plugins {
id 'org.springframework.boot' version '2.5.3'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'me.jinmin'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
//swagger
implementation 'io.springfox:springfox-swagger2:2.9.2'
implementation 'io.springfox:springfox-swagger-ui:2.9.2'
//database
runtimeOnly 'com.h2database:h2'
runtimeOnly 'mysql:mysql-connector-java'
//lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
//firebase sdk
implementation 'com.google.firebase:firebase-admin:6.8.1'
//okhttp
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
//test
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
2.5.3
Spring data jpa
web
을 통해 스프링 기반의 서버 아키텍처를 구현할 수 있습니다.swagger
: REST 웹 서비스의 여러 작업을 도와주는 오픈 소스 프레임워크swagger
를 주입했습니다.h2
, MySQL
H2
는 로컬 환경에서 사용했으며, MySQL
은 AWS의 RDS
(MySQL)에서 환경에서 사용했습니다.FCM
을 추가했습니다.okhttp
는 REST API와의 통신을 위해서 사용me.jinmin.boardver2
아래에 각 도메인(여기선 엔티티)들을 설정 했으며, 각 도메인 패키지마다 필요한 패키지들을 구성했습니다.api
, exception
, model
, repository
, service
로 구성했습니다.
resources
패키지에는 필요한 설정파일들을 구성했습니다.application
의 자동 설정을 나눈 이유는 로컬 환경에서의 운영과 클라우드 환경에서의 운영을 따로 구현하기 위한 것입니다.application.yml
⇒ spring.profiles.include
를 통해 application-XXX.yml
을 실행할 수 있습니다.spring:
profiles:
include: cloud # local or cloud
ec2
, firebase
는 후에 알아보자!application.properties
가 아닌 application.yml
을 사용한 이유METHOD | URL | EXPLANATION |
---|---|---|
POST | /users/signup | 회원가입 |
POST | /users/login | 로그인 |
GET | /users/{userId} | 단일 회원 조회 |
GET | /users | 전체 회원 조회 |
PUT | /users/update/{userId} | 회원 정보 수정 |
DELETE | /users/delete/{userId} | 회원 삭제 |
METHOD | URL | EXPLANATION |
---|---|---|
POST | /boards/{userId}/write | 유저 게시물 등록 |
GET | /boards | 전체 게시물 조회 |
GET | /boards/{boardId} | 단일 게시물 조회 |
GET | /boards/category/{category} | 카테고리별 게시물 조회 |
PUT | /boards/update/{userId}/{boardId} | 게시물 수정 |
DELETE | /boards/delete/{userId}/{boardId} | 게시물 삭제 |
GET | /boards/user/{userId} | 유저가 쓴 게시물 전체 조회 |
METHOD | URL | EXPLANATION |
---|---|---|
POST | /comments/write/{userId}/{boardId} | 댓글 작성 |
GET | /comments/{boardId} | 게시물 전체 댓글 조회 |
PUT | /comments/update/{userId}/{boardId} | 댓글 수정 |
DELETE | /comments/delete/{userId}/{boardId} | 댓글 삭제 |