Skip to content

RootToApex/spring-advanced

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

13 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

SPRING ADVANCED


Spring Boot ๊ธฐ๋ฐ˜์˜ ์ฝ”๋“œ ๊ฐœ์„  ๊ณผ์ œ


์ˆ˜ํ–‰ํ•œ ๊ณผ์ œ ๋ฐ ํ•ด๊ฒฐ ๊ณผ์ •

Lv.0 - ํ™˜๊ฒฝ ์„ค์ • ๋ฐ ์ธํ”„๋ผ ๊ตฌ์ถ• ์„ค์ • ํŒŒ์ผ(application.yml) ์—๋Ÿฌ ํ•ด๊ฒฐ: resources ํด๋” ๋ˆ„๋ฝ์œผ๋กœ ์ธํ•œ ๊ตฌ๋™ ์‹คํŒจ๋ฅผ ํด๋” ์ƒ์„ฑ ๋ฐ Resources Root ๋งˆํ‚น์œผ๋กœ ํ•ด๊ฒฐ.

DB ์—ฐ๋™: Docker ํ™˜๊ฒฝ(MySQL 3307 ํฌํŠธ)์— ๋งž์ถ˜ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์„ค์ • ๋ฐ ์Šคํ‚ค๋งˆ ์ƒ์„ฑ.

Lv.1 - ArgumentResolver ๋“ฑ๋ก ๋ฌธ์ œ: @Auth ์–ด๋…ธํ…Œ์ด์…˜ ๋กœ์ง์ด ์žˆ์–ด๋„ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ •์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ.

์›์ธ: WebMvcConfigurer ๋“ฑ๋ก ์—†์ด๋Š” Spring์ด Resolver์˜ ์กด์žฌ๋ฅผ ์•Œ ์ˆ˜ ์—†์Œ.

ํ•ด๊ฒฐ: WebConfig ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ addArgumentResolvers ๋ฉ”์„œ๋“œ์— ์ง์ ‘ ๋“ฑ๋ก.

Lv.2 - ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฐœ์„  (Refactoring) Early Return ์ ์šฉ: ์ค‘๋ณต ์ฒดํฌ ๋กœ์ง์„ ์ตœ์ƒ๋‹จ์œผ๋กœ ์˜ฎ๊ฒจ ๋ถˆํ•„์š”ํ•œ passwordEncoder.encode() ์‹คํ–‰ ๋ฐฉ์ง€.

Guard Clause ์ ์šฉ: throw ๋ฌธ ์ดํ›„์˜ ๋ถˆํ•„์š”ํ•œ else ๋ธ”๋ก์„ ์ œ๊ฑฐํ•˜์—ฌ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ.

Validation ์ฑ…์ž„ ์ด๋™: ์„œ๋น„์Šค ๋ ˆ์ด์–ด์˜ ๊ฒ€์ฆ ๋กœ์ง์„ DTO(@Valid, @Pattern)๋กœ ์ด๋™์‹œ์ผœ ์œ ์ง€๋ณด์ˆ˜์„ฑ ๊ฐ•ํ™”.

Lv.3 - N+1 ๋ฌธ์ œ ํ•ด๊ฒฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”: Todo ์กฐํšŒ ์‹œ ๋ฐœ์ƒํ•˜๋Š” N+1 ๋ฌธ์ œ๋ฅผ @EntityGraph๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 1๋ฒˆ์˜ ์ฟผ๋ฆฌ๋กœ ์ตœ์ ํ™”.

ํ•™์Šต ํฌ์ธํŠธ: ๊ธฐ๋ณธ๊ฐ’์„ LAZY๋กœ ์œ ์ง€ํ•˜๋˜, ํ•„์š”ํ•œ ์ƒํ™ฉ์—์„œ๋งŒ ํ•œ๋ฒˆ์— ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ž„์„ ์ดํ•ด.

Lv.4 - ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ฐœ์„  ํ…Œ์ŠคํŠธ ์ •ํ•ฉ์„ฑ ํ™•๋ณด: ์‹ค์ œ ์„œ๋น„์Šค์™€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ฐ„์˜ ์˜ˆ์™ธ ํƒ€์ž… ๋ฐ ๋ฉ”์‹œ์ง€ ๋ถˆ์ผ์น˜ ํ•ด๊ฒฐ.

์•ˆ์ •์„ฑ ๊ฐ•ํ™”: saveManager() ๋กœ์ง ๋‚ด ์œ ์ € null ์ฒดํฌ ๊ฐ€๋“œ ์ ˆ์„ ์ถ”๊ฐ€ํ•˜์—ฌ NullPointerException ๋ฐฉ์ง€.


๊ธฐ์ˆ  ์Šคํƒ Language: Java 17

Framework: Spring Boot 3.3.3

Persistence: Spring Data JPA

Build Tool: Gradle

Database: MySQL

Authentication: JWT

Infrastructure: Docker

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%