0. ํ๋ก์ ํธ ์ธํ
๊ธฐ๋ณธ ์ฌํญ
- Gradle
- Java 17
- Spring Boot 3.1.1
0. ๋ฒ์ ์ค์
project : Gradle(Groovy)
Language : Java 17
- Java 20์ด 5/22์ ๋์์ง๋ง ๋์จ์ง ํ ๋ฌ ๋ ๋ฒ์ ์ ์ฐ๋ ๊ฑด ์ข ์ํํ ๊ฒ ๊ฐ์์ 17๋ก ์ ํํ๋ค.
- ์ด์ ํ๋ก์ ํธ์์ Collection Factory Method๋ฅผ ๋ง์ด ์ผ์๋๋ฐ, Java 17์์๋ ์ด ๋ถ๋ถ์ด ๊ฐ์ ๋์๋ค๊ณ ํด์ 17๋ก ๊ฒฐ์ ํ๊ฒ ๋์๋ค
- Spring Boot 3.x ์ด์์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ Java 17 ์ด์์ ์ฌ์ฉํด์ผ ํ๋ค
- https://techblog.gccompany.co.kr/%EC%9A%B0%EB%A6%AC%ED%8C%80%EC%9D%B4-jdk-17%EC%9D%84-%EB%8F%84%EC%9E%85%ED%95%9C-%EC%9D%B4%EC%9C%A0-ced2b754cd7
- https://medium.com/sjk5766/spring-boot-%EB%B2%84%EC%A0%84%EC%97%90-%EB%94%B0%EB%A5%B8-java-%EB%B2%84%EC%A0%84-ff15c5ba7ecb
Spring Boot : 3.1.1
- ์ผ๋จ SNAPSHOT ์ ์ธ
- https://velog.io/@jmjmjmz732002/Springboot-Spring-Boot-3.0-%EB%B2%84%EC%A0%84-%EC%82%B4%ED%8E%B4%EB%B3%B4%EA%B8%B0
- https://github.com/spring-projects/spring-boot/releases/tag/v3.1.1
- ์ด๋ฒ ํ๋ก์ ํธ์์ WebSocket๊ณผ Redis๋ฅผ ์ธ ๊ฒ ๊ฐ์๋ฐ(์ฌ์ค redis๋ ํฌ๋ง์ฌํญ) ๊ทธ๊ฒ ๊ด๋ จ ๋ฒ๊ทธ fix๊ฐ ์๊ธธ๋ ์ฌ์ฉํ๋ค.
Metadata
์ง๊ธ๊น์ง ๋ชฐ๋๋๋ฐ ์ด๊ฒ๋ naming convention์ด ์๋๋ผ๊ณ ์...?
Maven – Guide to Naming Conventions
maven.apache.org
1. Dependency ์ค์
์ฒ์์ ์๋ฌด๊ฒ๋ ๋ชจ๋ฅด๊ณ JPA๋ JDBC ๊ฐ์ด ๋ฃ์๋ค๊ฐ ์์ฆ์ JPA๋ก ์์ ํ ์ฎ๊ฒจ๊ฐ๋ค๊ณ ํด์ ๊ทธ๊ฒ๋ง ๋ฃ๊ธฐ๋ก ํจ
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// Security
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
// @Valid
implementation 'org.springframework.boot:spring-boot-starter-validation'
compileOnly 'org.projectlombok:lombok'
// DB
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
application.yml ์ค์
SQL ๊ด๋ จ format๊ณผ parameter ๊ฐ ํ์ํ๋ ์ต์ ์ ์ถ๊ฐํ๋ค
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://{HOST_NAME}:{PORT_NUM}/{DB_NAME}?serverTimezone=Asia/Seoul
username: root
password: {ROOT_PW}
jpa:
hibernate:
ddl-auto: update
generate-ddl: true
properties:
hibernate:
show_sql: true # hibernate๊ฐ DB์ ๋ ๋ฆฌ๋ ๋ชจ๋ ์ฟผ๋ฆฌ ํ์
format_sql: true # sql format ์ค์
use_sql_comments: true # ์ฃผ์ ํ์
highlight_sql: true # ANSI SQL์ ๋ง๊ฒ ์ ์ถ๋ ฅ
logging:
level:
org:
hibernate:
type:
descriptor:
sql: trace # parameter ๊ฐ์ ํ์
- connector ์ ๋ฐ์ดํธ ๊ด๋ จ ์ค๋ฅ๊ฐ ๋์ ์๋กญ๊ฒ mysql-connector-java-8.0.30์ผ๋ก ๊น์๋ค
2. Template ์ค์
PULL_REQUEST_TEMPLATE.md
### ์์
๊ฐ์
<!--
ex) ๊ณ ์์ด๊ฐ ์ผ์น ์๋ฆฌ๋ฅผ ๋ด๋๋ก ์์
-->
### Jira
<!--
ex) BAEMIN-1004
-->
### ์์
๋ถ๋ฅ
- [ ] ๋ฒ๊ทธ ์์
- [ ] ์ ๊ท ๊ธฐ๋ฅ
- [ ] ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ณ๊ฒฝ
<!--
- [ ] ๋ฒ๊ทธ ์์
- [x] ์ ๊ท ๊ธฐ๋ฅ
- [ ] ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ณ๊ฒฝ
-->
### ์์
์์ธ ๋ด์ฉ
<!--
ex)
1. ๋ค ๋ฐ ์ง์น ํด๋์ค์ `ํฌ์` ํจ์ ์ถ๊ฐ
2. ๊ณ ์์ด ํด๋์ค์์ `ํฌ์` ํจ์์ `๋ฏธ์ผ์์น.wav` ์ฌ์์ํด
-->
### ์๊ฐํด๋ณผ ๋ฌธ์
<!--
ex)
1. wav ํ์ผ์ ๋งค๋ฒ ์
๋ ฅํ๊ธฐ ๊ท์ฐฎ๊ฒ ๋ค.
-->
Github Hook ์ถ๊ฐ
์ด๊ฑด ์๋ ๊ฒ์๊ธ์์ ํ์ธํ ์ ์๋ค.
https://dev-minji.tistory.com/213
[Github Hook] Jira ํฐ์ผ ๋ฒํธ ์ปค๋ฐ ๋ฉ์์ง ์๋ ์ถ๊ฐํ๊ธฐ
์ด๋ฒ ํ๋ก์ ํธ์์ ์ฒ์์ผ๋ก Jira๋ฅผ ์ฐ๋ฉด์ ์ปค๋ฐ ๋ฉ์์ง์ ๋งค๋ฒ ์ด์๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค. ๊ทธ๋์ hook์ ์ด์ฉํด์ ์๋์ผ๋ก ์ปค๋ฐ ๋ฉ์์ง ์์ ์๋์ผ๋ก ์ง๋ผ ์ด์ ๋ฒํธ๊ฐ ๋ถ๋๋ก ์ค์ ํ๋ค! ๋ด ์ค์ 1
dev-minji.tistory.com
Base Branch develop์ผ๋ก ๋ณ๊ฒฝ
์ด๊ฑธ ์ ํด๋์ผ๋ฉด ๋งจ๋ PRํ ๋๋ง๋ค develop์ผ๋ก ๋ฐ๊พธ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ค์ ์์ ๋ฐ๊ฟ์ค์ผ ํจ
3. ์ ์ ๋ถ์ ๋๊ตฌ ๋ฐ convention tool ์ถ๊ฐ
SonarCloud
sonarqube์ ํด๋ผ์ฐ๋ ๋ฒ์ ์ผ๋ก ์ข ๋ ๊ฐํธํ๊ฒ ์ค์นํ ์ ์๋ค!
์ด์ ํ๋ก์ ํธ์์ ์ฐ๋ ๊ฑธ ๊ทธ๋๋ก ๋ค๊ณ ์๋คใ ใ
https://zion830.tistory.com/79
GitHub ํ๋ก์ ํธ์ SonarCloud ์ฐ๊ฒฐํด๋ณด๊ธฐ
GitHub์ ์ฌ๋ ค๋ ํ๋ก์ ํธ์ SonarCloud๋ฅผ ์ฐ๊ฒฐํด์ ์์ค์ฝ๋ ์ ์ ๋ถ์์ ํด๋ณด์. ์ ์ ๋ถ์์ ์์ค ์ฝ๋ ํ์ง์ ๋์ด๊ธฐ ์ํด ์ ์ฌ์ ์ธ ๋ฒ๊ทธ๋, ์ฝ๋ฉ ์ปจ๋ฒค์ ์ ์ด๊ธ๋๋ ๋ถ๋ถ์ ์ฐพ์๋ด๋ ๊ฒ์ ์๋ฏธ
zion830.tistory.com
IntelliJ CheckStyle Plugin
์ด๊ฒ๋ ์ง๋ ํ๋ก์ ํธ ๋ฆฌํฉํ ๋งํ๋ ์ค ๋ฐ๊ฒฌํ ํด์ด๋ค
์๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ Naver Conding convention ๋ค์ด ๋ฐ๊ณ ๊ทธ๊ฒ ๊ธฐ๋ฐ์ผ๋ก checkstyle์ ์ ์ฉํ๋ค
https://bestinu.tistory.com/64
InteliJ ๋ค์ด๋ฒ Java ์ฝ๋ฉ ์ปจ๋ฒค์ ์ ์ฉํ๊ธฐ + Checkstyle
InteliJ ๋ค์ด๋ฒ Java ์ฝ๋ฉ ์ปจ๋ฒค์ ์ ์ฉํ๊ธฐ + Checkstyle ์ฝ๋ฉ ์ปจ๋ฒค์ ์ด๋? ์ฝ๋ฉ ์ปจ๋ฒค์ ์ด๋ ๊ฐ๋ ์ฑ์ด ์ข๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ฝ๋ฉ ์คํ์ผ ๊ท์ฝ์ ๋งํ๋ค. ์ฝ๋ฉ ์ปจ๋ฒค์ ์ ์ค์ํ๋ฉด
bestinu.tistory.com
์ผ๋จ์ ์ด๊ฒ์ผ๋ก 1์ฐจ ํ๋ก์ ํธ ์ธํ ์ ๋!