Skip to content

Commit ecfe99e

Browse files
authored
Merge pull request #57 from martinP-Ghub/part1-박태식
[박태식] sprint1
2 parents d65d70e + f6b04c5 commit ecfe99e

27 files changed

+1780
-1
lines changed

.gitignore

+166
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
# Created by https://www.toptal.com/developers/gitignore/api/intellij,gradle,groovy
2+
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij,gradle,groovy
3+
4+
### Groovy ###
5+
# .gitignore created from Groovy contributors in https://github.com/apache/groovy/blob/master/.gitignore
6+
7+
user.gradle
8+
.gradle/
9+
target/
10+
build/
11+
out/
12+
13+
*.DS_Store
14+
*.class
15+
*.swp
16+
*~
17+
18+
.idea
19+
*.iml
20+
*.ipr
21+
*.iws
22+
.shelf
23+
24+
.settings/
25+
.classpath
26+
.project
27+
bin/
28+
29+
30+
### Intellij ###
31+
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
32+
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
33+
34+
# User-specific stuff
35+
.idea/**/workspace.xml
36+
.idea/**/tasks.xml
37+
.idea/**/usage.statistics.xml
38+
.idea/**/dictionaries
39+
.idea/**/shelf
40+
41+
# AWS User-specific
42+
.idea/**/aws.xml
43+
44+
# Generated files
45+
.idea/**/contentModel.xml
46+
47+
# Sensitive or high-churn files
48+
.idea/**/dataSources/
49+
.idea/**/dataSources.ids
50+
.idea/**/dataSources.local.xml
51+
.idea/**/sqlDataSources.xml
52+
.idea/**/dynamic.xml
53+
.idea/**/uiDesigner.xml
54+
.idea/**/dbnavigator.xml
55+
56+
# Gradle
57+
.idea/**/gradle.xml
58+
.idea/**/libraries
59+
60+
# Gradle and Maven with auto-import
61+
# When using Gradle or Maven with auto-import, you should exclude module files,
62+
# since they will be recreated, and may cause churn. Uncomment if using
63+
# auto-import.
64+
# .idea/artifacts
65+
# .idea/compiler.xml
66+
# .idea/jarRepositories.xml
67+
# .idea/modules.xml
68+
# .idea/*.iml
69+
# .idea/modules
70+
# *.iml
71+
# *.ipr
72+
73+
# CMake
74+
cmake-build-*/
75+
76+
# Mongo Explorer plugin
77+
.idea/**/mongoSettings.xml
78+
79+
# File-based project format
80+
81+
# IntelliJ
82+
83+
# mpeltonen/sbt-idea plugin
84+
.idea_modules/
85+
86+
# JIRA plugin
87+
atlassian-ide-plugin.xml
88+
89+
# Cursive Clojure plugin
90+
.idea/replstate.xml
91+
92+
# SonarLint plugin
93+
.idea/sonarlint/
94+
95+
# Crashlytics plugin (for Android Studio and IntelliJ)
96+
com_crashlytics_export_strings.xml
97+
crashlytics.properties
98+
crashlytics-build.properties
99+
fabric.properties
100+
101+
# Editor-based Rest Client
102+
.idea/httpRequests
103+
104+
# Android studio 3.1+ serialized cache file
105+
.idea/caches/build_file_checksums.ser
106+
107+
### Intellij Patch ###
108+
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
109+
110+
# *.iml
111+
# modules.xml
112+
# .idea/misc.xml
113+
# *.ipr
114+
115+
# Sonarlint plugin
116+
# https://plugins.jetbrains.com/plugin/7973-sonarlint
117+
.idea/**/sonarlint/
118+
119+
# SonarQube Plugin
120+
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
121+
.idea/**/sonarIssues.xml
122+
123+
# Markdown Navigator plugin
124+
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
125+
.idea/**/markdown-navigator.xml
126+
.idea/**/markdown-navigator-enh.xml
127+
.idea/**/markdown-navigator/
128+
129+
# Cache file creation bug
130+
# See https://youtrack.jetbrains.com/issue/JBR-2257
131+
.idea/$CACHE_FILE$
132+
133+
# CodeStream plugin
134+
# https://plugins.jetbrains.com/plugin/12206-codestream
135+
.idea/codestream.xml
136+
137+
# Azure Toolkit for IntelliJ plugin
138+
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
139+
.idea/**/azureSettings.xml
140+
141+
### Gradle ###
142+
.gradle
143+
**/build/
144+
!src/**/build/
145+
146+
# Ignore Gradle GUI config
147+
gradle-app.setting
148+
149+
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
150+
!gradle-wrapper.jar
151+
152+
# Avoid ignore Gradle wrappper properties
153+
!gradle-wrapper.properties
154+
155+
# Cache of project
156+
.gradletasknamecache
157+
158+
# Eclipse Gradle plugin generated files
159+
# Eclipse Core
160+
# JDT-specific (Eclipse Java Development Tools)
161+
162+
### Gradle Patch ###
163+
# Java heap dump
164+
*.hprof
165+
166+
# End of https://www.toptal.com/developers/gitignore/api/intellij,gradle,groovy

README.md

+99-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,99 @@
1-
# Spring 백엔드 트랙 1기 스프린트 미션 제출 리포지토리
1+
# Spring 백엔드 트랙 1기 스프린트 미션 제출 리포지토리
2+
3+
## 요구사항
4+
5+
### 기본 요구사항
6+
7+
### 프로젝트 초기화
8+
9+
[ ] IntelliJ를 통해 다음의 조건으로 Java 프로젝트를 생성합니다.
10+
11+
[ ] IntelliJ에서 제공하는 프로젝트 템플릿 중 Java를 선택합니다.
12+
13+
[ ] 프로젝트의 경로는 스프린트 미션 리포지토리의 경로와 같게 설정합니다.
14+
15+
[ ] Create Git Repository 옵션은 체크하지 않습니다.
16+
17+
[ ] Build system은 Gradle을 사용합니다. Gradle DSL은 Groovy를 사용합니다.
18+
19+
[ ] JDK 17을 선택합니다.
20+
21+
[ ] GroupId는 com.sprint.mission로 설정합니다.
22+
23+
[ ] ArtifactId는 수정하지 않습니다.
24+
25+
[ ] .gitignore에 IntelliJ와 관련된 파일이 형상관리 되지 않도록 .idea디렉토리를 추가합니다.
26+
27+
### 도메인 모델링
28+
29+
[ ] 디스코드 서비스를 활용해보면서 각 도메인 모델에 필요한 정보를 도출하고, Java Class로 구현하세요.
30+
31+
[ ] 패키지명: com.sprint.mission.discodeit.entity
32+
33+
[ ] 도메인 모델 정의
34+
35+
1. 공통
36+
37+
[ ] id: 객체를 식별하기 위한 id로 UUID 타입으로 선언합니다.
38+
39+
[ ] createdAt, updatedAt: 각각 객체의 생성, 수정 시간을 유닉스 타임스탬프로 나타내기 위한 필드로 Long 타입으로 선언합니다.
40+
2. User
41+
3. Channel
42+
4. Message
43+
5. 생성자
44+
[ ] id는 생성자에서 초기화하세요.
45+
46+
[ ] createdAt는 생성자에서 초기화하세요.
47+
48+
[ ] id, createdAt, updatedAt을 제외한 필드는 생성자의 파라미터를 통해 초기화하세요.
49+
50+
6. 메소드
51+
52+
[ ] 각 필드를 반환하는 Getter 함수를 정의하세요.
53+
54+
[ ] 필드를 수정하는 update 함수를 정의하세요.
55+
56+
### 서비스 설계 및 구현
57+
58+
[ ] 도메인 모델 별 CRUD(생성, 읽기, 모두 읽기, 수정, 삭제) 기능을 인터페이스로 선언하세요.
59+
60+
[ ] 인터페이스 패키지명: com.sprint.mission.discodeit.service
61+
62+
[ ] 인터페이스 네이밍 규칙: [도메인 모델 이름]Service
63+
64+
[ ] 다음의 조건을 만족하는 서비스 인터페이스의 구현체를 작성하세요.
65+
66+
[ ] 클래스 패키지명: com.sprint.mission.discodeit.service.jcf
67+
68+
[ ] 클래스 네이밍 규칙: JCF[인터페이스 이름]
69+
70+
[ ] Java Collections Framework를 활용하여 데이터를 저장할 수 있는 필드(data)를 final로 선언하고 생성자에서 초기화하세요.
71+
72+
[ ] data 필드를 활용해 생성, 조회, 수정, 삭제하는 메소드를 구현하세요.
73+
74+
### 메인 클래스 구현
75+
76+
[ ] 메인 메소드가 선언된 JavaApplication 클래스를 선언하고, 도메인 별 서비스 구현체를 테스트해보세요.
77+
78+
[ ] 등록
79+
80+
[ ] 조회(단건, 다건)
81+
82+
[ ] 수정
83+
84+
[ ] 수정된 데이터 조회
85+
86+
[ ] 삭제
87+
88+
[ ] 조회를 통해 삭제되었는지 확인
89+
90+
## 기본 요구사항 커밋 태그
91+
92+
[ ] 여기까지 진행 후 반드시 커밋해주세요. 그리고 sprint1-basic 태그를 생성해주세요.
93+
94+
## 심화 요구 사항
95+
96+
서비스 간 의존성 주입
97+
98+
[ ] 도메인 모델 간 관계를 고려해서 검증하는 로직을 추가하고, 테스트해보세요.
99+
힌트: Message를 생성할 때 연관된 도메인 모델 데이터 확인하기

build.gradle

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
plugins {
2+
id 'groovy'
3+
id 'checkstyle'
4+
}
5+
6+
group 'com.sprint.mission'
7+
version '1.0-SNAPSHOT'
8+
9+
repositories {
10+
mavenCentral()
11+
}
12+
13+
dependencies {
14+
implementation 'org.apache.groovy:groovy:4.0.14'
15+
implementation 'org.projectlombok:lombok:1.18.30' // 최신 버전 사용
16+
annotationProcessor 'org.projectlombok:lombok:1.18.30' // Lombok 애노테이션 프로세서 추가
17+
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
18+
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
19+
// https://mvnrepository.com/artifact/com.google.guava/guava
20+
implementation 'com.google.guava:guava:33.2.1-jre'
21+
// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
22+
implementation 'com.fasterxml.jackson.core:jackson-databind:2.18.2'
23+
}
24+
25+
test {
26+
useJUnitPlatform()
27+
}
28+
29+
checkstyle {
30+
toolVersion = '1.0' // Checkstyle 버전
31+
configFile = rootProject.file('config/checkstyle.xml') // Checkstyle 설정 파일 경로
32+
}

0 commit comments

Comments
 (0)