๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ŠคํŒŒ๋ฅดํƒ€87

๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ_Day 7 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ ํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ ์ˆ˜์ •์ˆ˜์ค€๋ณ„ ํ•™์Šต๋ฐ˜ ๋ฒ ์ด์ง๋ฐ˜ ์„ธ์…˜ ๋“ฃ๊ธฐ์ˆ˜์ค€๋ณ„ ํ•™์Šต๋ฐ˜ ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์„ธ์…˜ ๋“ฃ๊ธฐ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…(GitHub ๊ด€๋ จ) ์ž‘์„ฑTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ (๋‰ด์Šคํ”ผ๋“œ ๋งŒ๋“ค๊ธฐ ํ”„๋กœ์ ํŠธ)ํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ ์ˆ˜์ •ํŒ”๋กœ์ž‰๋งŒ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ด์„œ ํŒ”๋กœ์›Œ ์ „์ฒด ์กฐํšŒ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.ํŒ”๋กœ์šฐ๋ฅผ ๊ณ„์† ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ด์„œ ํ•œ ๋ฒˆ๋งŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์—ˆ๋‹ค.๋ฒ ์ด์ง๋ฐ˜ ์„ธ์…˜์ธ์ฆ์ธ๊ฐ€ํ™œ์šฉ(ํ† ํฐ์ธ์ฆ๋ฐฉ์‹: JWT)์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์„ธ์…˜์Šค๋ ˆ๋“œ์˜ ๋ชจ๋“  ๊ฒƒ ์˜ค๋Š˜ ํ•˜๋ฃจ ์ •๋ฆฌ โœ๏ธ์˜ค๋Š˜ ํ•˜๋ฃจ๋ฅผ ์ •๋ฆฌํ•˜์ž๋ฉด ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ์˜ ๋งˆ๋ฌด๋ฆฌ...? ๋‹จ๊ณ„์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋‚ด์ผ ์˜ˆ์ •๋˜์–ด ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ๋ฐœํ‘œ๋ฅผ ์œ„ํ•ด ๊ธฐ๋Šฅ์„ ์ ๊ฒ€ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.๋‚ด๊ฐ€ ๋งก์•˜๋˜ ํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ์—์„œ ํŒ”๋กœ์ž‰์„ ์กฐํšŒํ•˜๋Š” .. 2024. 12. 26.
๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ_Day 4 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ๊ธฐ์ดˆํ”„๋กœ์ ํŠธ ํŒ”๋กœ์šฐ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ ํŒ”๋กœ์šฐ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ ํŠน์ • ๋ฉค๋ฒ„์˜ ํŒ”๋กœ์šฐ ์ „์ฒด ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„TIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ (๋‰ด์Šคํ”ผ๋“œ ๋งŒ๋“ค๊ธฐ ํ”„๋กœ์ ํŠธ)ํŒ”๋กœ์šฐ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„Follow Entity ์ƒ์„ฑ ํ›„ ํŒ”๋กœ์šฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.member_id(PathVariable)์™€ following_id)๋ฅผ ๋ฐ›์•„ ํŒ”๋กœ์šฐ ๊ด€๊ณ„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ ์„ฑ๊ณตํ–ˆ๋‹ค.ํŒ”๋กœ์šฐ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„member_id(PathVariable)์™€ follow_id(Pathvariable)๋ฅผ ๋ฐ›์•„ ํŒ”๋กœ์šฐ ๊ด€๊ณ„๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ ์„ฑ๊ณตํ–ˆ๋‹ค.ํŠน์ • ๋ฉค๋ฒ„์˜ ํŒ”๋กœ์šฐ ์ „์ฒด ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„member_id(PathVariable)๋ฅผ ๋ฐ›์•„ ํŒ”๋กœ์ž‰ ๋ฉค๋ฒ„๋ฅผ ์ „์ฒด .. 2024. 12. 23.
๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ_Day 1 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ํ”„๋กœ์ ํŠธ ๋ฐœ์ œ ๋“ฃ๊ธฐ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ S.A ์ž‘์„ฑ๊นƒ ๋ฉ”์‹œ์ง€ ๊ด€๋ จ ๋ฏธ๋‹ˆ ์„ธ์…˜ ๋“ฃ๊ธฐTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ (๋‰ด์Šคํ”ผ๋“œ ๋งŒ๋“ค๊ธฐ ํ”„๋กœ์ ํŠธ)application.yml ํŒŒ์ผapplication.properties ํŒŒ์ผ์˜ ๋‹ค๋ฅธ ๋ฒ„์ „ → ํŒ€ ํ”„๋กœ์ ํŠธ ์‹œ ์„œ๋กœ์˜ ํ™˜๊ฒฝ์„ ์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  gitignore๋ฅผ ํ†ตํ•ด commit์—์„œ ์ œ์™ธ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.ERD ๊ด€๋ จ ์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ์—ฐ๊ด€๊ด€๊ณ„ ์—ฐ๊ฒฐ์„ ํ•˜์ง€ ์•Š๊ณ ๋„ id์™€ type ๊ฐ’์„ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.๋ฏธ๋‹ˆ ์„ธ์…˜: ๋‚ด์šฉ → ex) Feat: Add Level 1............์ปค๋ฐ‹์— ๋Œ€ํ•œ ๋‚ด์šฉ ์ž‘์„ฑ : ๋ฌด์Šจ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€, ๋ญ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋Š”์ง€ ๊ตฌ์ฒด์ ์œผ๋กœ ์ ์„์ˆ˜๋ก ํŒ€์›๋“ค์ด ๋ณด๊ธฐ ์‰ฝ๋‹ค!์š”์ฆ˜์€ ๊นƒ๋ชจ์ง€๋ฅผ ์ด์šฉํ•ด์„œ ๋‚˜ํƒ€๋‚ด๊ธฐ๋„ .. 2024. 12. 20.
[ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ]์ผ์ • ๊ด€๋ฆฌ ์•ฑ Develop_ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๊ณผ์ œ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๋ฌธ์ œ ์ƒํ™ฉ์ผ์ • ์ƒ์„ฑ API๋ฅผ ์™„์„ฑํ•˜๊ณ  Postman์œผ๋กœ ํ…Œ์ŠคํŠธํ–ˆ์ง€๋งŒ 500 Internal Server Error๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.๋ฌธ์ œ ์›์ธ์ฝ”๋“œ์—์„œ @EntityListeners ์–ด๋…ธํ…Œ์ด์…˜์ด ์ž˜๋ชป๋œ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.์ž˜๋ชป๋œ ์ฝ”๋“œ@EntityListeners(EntityListener.class)์ด๋กœ ์ธํ•ด EntityListener๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์•„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•@EntityListeners ์–ด๋…ธํ…Œ์ด์…˜์„ ์˜ฌ๋ฐ”๋ฅธ ํด๋ž˜์Šค์ธ AuditingEntityListener๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค.์ˆ˜์ •๋œ ์ฝ”๋“œ@EntityListeners(AuditingEntityListener.class)์ˆ˜์ • ํ›„ Postman์œผ๋กœ ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋ƒˆ๊ณ , ์ •์ƒ์ ์œผ๋กœ ์ผ์ •์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค.๊ฒฐ๋ก  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์–ด๋…ธํ…Œ์ด.. 2024. 12. 19.
์ฃผํŠน๊ธฐ ์ž…๋ฌธ/์ˆ™๋ จ_Day 20 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ๊ฐœ์ธ ๊ณผ์ œ Lv 5 ์™„์„ฑ๊ฐœ์ธ ๊ณผ์ œ Lv 6 ์™„์„ฑ๊ฐœ์ธ ๊ณผ์ œ Lv 7 ์™„์„ฑAPI ๋ช…์„ธ์„œ & ERD ์ˆ˜์ •TIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ๊ฐœ์ธ ๊ณผ์ œํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค!Lv 6. ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” ๊ณผ์ œ ์š”๊ตฌ์‚ฌํ•ญ์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ ์ €์žฅํ–ˆ๋‹ค.PasswordEncoder์˜ Encode, matches ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ–ˆ๋‹ค.Lv 7. ๋Œ“๊ธ€ CRUDcomment Entity๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค.member Entity์™€ todo Entity ๊ฐ„์˜ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์„ค์ •ํ–ˆ๋‹ค.๊ทธ ํ›„ ๋Œ“๊ธ€ ์ƒ์„ฑ, ์ „์ฒด ๋Œ“๊ธ€ ์กฐํšŒ, ์„ ํƒ ์ผ์ •์˜ ์ „์ฒด ๋Œ“๊ธ€ ์กฐํšŒ, ์„ ํƒ ๋Œ“๊ธ€ ์ˆ˜์ •, ์„ ํƒ ๋Œ“๊ธ€ ์‚ญ์ œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.API ๋ช…์„ธ์„œ์™€ ERD ์ˆ˜์ •  ์˜ค๋Š˜ ํ•˜๋ฃจ .. 2024. 12. 18.
์ฃผํŠน๊ธฐ ์ž…๋ฌธ/์ˆ™๋ จ_Day 19 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ๊ฐœ์ธ ๊ณผ์ œ Lv 4 ์™„์„ฑ๊ฐœ์ธ ๊ณผ์ œ Lv 5 ์™„์„ฑ๋ฒ ์ด์ง๋ฐ˜ ์„ธ์…˜ ๋“ฃ๊ธฐBean Validation ๊ฐ•์˜ ๋ณต์ŠตTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ๊ฐœ์ธ ๊ณผ์ œํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค!Lv 4. ๋กœ๊ทธ์ธ(์ธ์ฆ)LoginReqeustDto ์ƒ์„ฑ(email, password ํ•„๋“œ ์ถ”๊ฐ€), LoginResponseDto ์ƒ์„ฑ(member ํ•„๋“œ ์ถ”๊ฐ€), AuthController ์ƒ์„ฑ(login ๋ฉ”์„œ๋“œ ๊ตฌํ˜„), AuthService ์ƒ์„ฑ(login ๋ฉ”์„œ๋“œ ๊ตฌํ˜„), MemberRepository ์ˆ˜์ •(findByEmailAndPassword ๋ฉ”์„œ๋“œ ๊ตฌํ˜„), LoginFilter(doFilter override), WebConfig(loginFilter ๋“ฑ๋ก)Lv 5. ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ ์šฉํ•˜๊ธฐLv .. 2024. 12. 17.