๊ธฐ๋ณธ ์ฌํญ
- 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์ด ์๋๋ผ๊ณ ์...?
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
Base Branch develop์ผ๋ก ๋ณ๊ฒฝ
์ด๊ฑธ ์ ํด๋์ผ๋ฉด ๋งจ๋ PRํ ๋๋ง๋ค develop์ผ๋ก ๋ฐ๊พธ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ค์ ์์ ๋ฐ๊ฟ์ค์ผ ํจ
3. ์ ์ ๋ถ์ ๋๊ตฌ ๋ฐ convention tool ์ถ๊ฐ
SonarCloud
sonarqube์ ํด๋ผ์ฐ๋ ๋ฒ์ ์ผ๋ก ์ข ๋ ๊ฐํธํ๊ฒ ์ค์นํ ์ ์๋ค!
์ด์ ํ๋ก์ ํธ์์ ์ฐ๋ ๊ฑธ ๊ทธ๋๋ก ๋ค๊ณ ์๋คใ ใ
https://zion830.tistory.com/79
IntelliJ CheckStyle Plugin
์ด๊ฒ๋ ์ง๋ ํ๋ก์ ํธ ๋ฆฌํฉํ ๋งํ๋ ์ค ๋ฐ๊ฒฌํ ํด์ด๋ค
์๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ Naver Conding convention ๋ค์ด ๋ฐ๊ณ ๊ทธ๊ฒ ๊ธฐ๋ฐ์ผ๋ก checkstyle์ ์ ์ฉํ๋ค
https://bestinu.tistory.com/64
์ผ๋จ์ ์ด๊ฒ์ผ๋ก 1์ฐจ ํ๋ก์ ํธ ์ธํ ์ ๋!
'๐ฅ ํ๋ก์ ํธ > ์จ๋ฉ๋ฉ์ดํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ค๋ฅ] Transactional์ ๋ฒ์์์ ๋ฒ์ด๋ dirty checking์ด ๋์ง ์๋ ๊ฒฝ์ฐ (0) | 2023.08.13 |
---|---|
[์ง์] ๋ฉ์๋ ์ฐธ์กฐ์ ์์ฑ์ ์ฐธ์กฐ (0) | 2023.07.28 |
[์ค๋ฅ] ์์ ๊ด๊ณ์ Entity์ @Builder ์ ์ฉ ์ ์ด์ (0) | 2023.07.26 |
[AWS S3] ๋ฒํท ์์ฑํ๊ธฐ (0) | 2023.07.13 |
[Github Hook] Jira ํฐ์ผ ๋ฒํธ ์ปค๋ฐ ๋ฉ์์ง ์๋ ์ถ๊ฐํ๊ธฐ (0) | 2023.06.29 |
๋๊ธ