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

๐Ÿš€ ํŒ (๊ธฐ์ˆ  ์ ์šฉ ๋ฐฉ๋ฒ• ๋“ฑ)/๐ŸŒฑ Spring5

[Spring & Github] Pull Request๋ฅผ ํ•  ๋•Œ ๋งˆ๋‹ค ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ํ™•์ธํ•˜์ž (feat. Jacoco) ์•ˆ๋…•ํ•˜์„ธ์š”. dev_writer์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ธ Jacoco๋ฅผ ์ ์šฉํ•œ ๊ณผ์ •์— ๋Œ€ํ•ด ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. JacocoJacoco๋Š” ์ž๋ฐ” ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์ธก์ •ํ•˜๊ณ  ๋ฆฌํฌํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค ํˆดํ‚ท์ž…๋‹ˆ๋‹ค. (์œ„ํ‚ค๋ฐฑ๊ณผ) ์• ์ดˆ์— Jacoco๋ผ๋Š” ๋‹จ์–ด ์ž์ฒด๊ฐ€ Java code coverage tools๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋‚ดํฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ (code coverage)์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋…ผํ•  ๋•Œ ์–ผ๋งˆ๋‚˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์ถฉ๋ถ„ํ•œ๊ฐ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์„ ๋•Œ ์ฝ”๋“œ ์ž์ฒด๊ฐ€ ์–ผ๋งˆ๋‚˜ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. - ์œ„ํ‚ค๋ฐฑ๊ณผ ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๊ผผ๊ผผํ•˜๊ฒŒ ์ž‘์„ฑํ• ์ˆ˜๋ก ์˜ˆ์™ธ ์ผ€์ด์Šค๋“ค์„ ์ž˜ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ๋ ‡๊ธฐ์— ์†Œํ”„ํŠธ์›จ์–ด์˜ ํ’ˆ์งˆ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ…Œ.. 2024. 10. 14.
[Spring REST Docs โœ๏ธ] ์–ด๋ ต๊ฒŒ๋งŒ ๋Š๊ปด์กŒ๋˜ REST Docs๋ฅผ ์ ์šฉํ•ด๋ณด์ž! (2) ์˜ค๋žœ๋งŒ์— ๊ธฐ์ˆ  ํŒ์„ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค JWT ๊ด€๋ จํ•ด์„œ ๊ธ€์„ ๊ณ„์† ์ž‘์„ฑํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ํ”„๋กœ์ ํŠธ๋„ ์žˆ๊ณ  ๊ฐœ๊ฐ•์„ ํ•œ ์ง€ ์–ผ๋งˆ ๋˜์ง€ ์•Š์•„ ๋ฐ”์œ ๊ฒƒ๋„ ์žˆ์–ด์„œ ํŒ ๊ธ€์€ ๊ฑฐ์˜ ํ•œ ๋‹ฌ ๋งŒ์— ์˜ฌ๋ฆฌ๋„ค์š”.. ๐Ÿ˜ญ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉฐ ๋ฐ”์˜๊ฒŒ ๋œ ๊ฒƒ๋„ ์žˆ์ง€๋งŒ ๊ทธ ๋•๋ถ„์— REST Docs์— ๋Œ€ํ•ด ๋” ์ž˜ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์ด ๊ณผ์ •์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๊ธ€์—์„œ๋Š” document ๋ฉ”์„œ๋“œ๋กœ ๊ฐ„๋‹จํžˆ docs ํŒจํ‚ค์ง€ ์•„๋ž˜์— html ๋ฌธ์„œ๋“ค์ด ๋ณด๊ด€๋˜๋Š” ๊ฒƒ๊นŒ์ง€ ๋‹ค๋ฃจ์—ˆ๋Š”๋ฐ์š”, ์ด๋ฒˆ์—๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์‹ค์ œ ๋ฌธ์„œ๊ฐ€ ์ž‘์„ฑ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ธฐ์กด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.// import ํ‘œํ˜„์€ ์ƒ๋žต@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.cla.. 2024. 3. 5.
[Spring MVC ๐ŸŒ] ํšŒ์› ์‹๋ณ„์„ ํ•ด ๋ณด์ž! (2) - ์„ธ์…˜ ์ ์šฉ ๋ฐฉ๋ฒ• ๐Ÿ“ฆ ์ด์ „ ๊ธ€์— ์ด์–ด์„œ ๋ฐ”๋กœ ์„ธ์…˜์„ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ๋„ ๊ตฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! (ํšŒ์› ์‹๋ณ„์€ JWT๊นŒ์ง€ ํ•˜๊ณ  ๋‚œ ๋’ค์— ๊ฐ๊ฐ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.) ์„ธ์…˜์„ธ์…˜์€ ์ฟ ํ‚ค๋งŒ์„ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐฉ์‹๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์„ธ์…˜์˜ ์‚ฌ์šฉ ์ด์œ ์„ธ์…˜์„ ์™œ ์“ฐ๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์ฟ ํ‚ค์— ๋Œ€ํ•ด ๋‹ค์‹œ ์•Œ์•„๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์ฟ ํ‚ค ๋ฐฉ์‹์€, ์ฟ ํ‚ค ์•ˆ์— ์„œ๋ฒ„๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ •๋ณด๋“ค์„ ๋‹ค ๊ธฐ๋กํ•ด๋†”์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. (๋‹‰๋„ค์ž„.๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฟ ํ‚ค๋กœ ๊ทธ๋Œ€๋กœ ๋„ฃ์–ด๋‘” ๊ฒƒ ๋“ฑ) ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด ์ฟ ํ‚ค๋ฅผ ๋งŒ์•ฝ ํƒˆ์ทจ๋‹นํ–ˆ์„ ๊ฒฝ์šฐ (๊ฐ•๋„๊ฐ€ ์—ฌํ–‰๊ฐ์˜ ์‹ ๋ถ„์ฆ์„ ํ›”์น˜๋Š” ๋“ฑ), ๋ธŒ๋ผ์šฐ์ € (์—ฌํ–‰๊ฐ)์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋‹ค ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ ? ๋ฐ”๋กœ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์„ธ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ์…˜์˜ ํŠน์ง•์„œ๋ฒ„๋Š” ์œ ์ €๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ์„ธ์…˜ DB์— ์œ ์ €๋ฅผ ์ƒ.. 2024. 2. 10.
[Spring MVC ๐ŸŒ] ํšŒ์› ์‹๋ณ„์„ ํ•ด ๋ณด์ž! (1) - ์ฟ ํ‚ค ์ ์šฉ ๋ฐฉ๋ฒ• ๐Ÿช ๊ฐœ์š”์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ์—๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜์‹œ๋ฉด์„œ ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ํ•œ ํšŒ์› ์‹๋ณ„์„ ์Šคํ”„๋ง์—์„œ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ ๊ณผ์ •์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค! ๋ณดํ†ต ์œ„ ์ž‘์—…๋“ค์„ ํ•˜๊ธฐ ์œ„ํ•ด ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์…จ๋˜ ๊ฒฝํ—˜์ด ์žˆ์œผ์‹ค ํ…๋ฐ์š”, ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋Š” ๋ณ„๋„์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค ๋ณด๋‹ˆ ๊นŠ์ด ์žˆ๊ฒŒ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์Šคํ”„๋ง๋งŒ์œผ๋กœ ํ•ด๋ณด๋Š” ๊ฒŒ ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. (๋ฉ˜ํ† ๋งํ•ด ์ฃผ์‹œ๋Š” ์„ ๋ฐฐ๋‹˜๊ป˜์„œ๋„ ๊ฐ™์€ ์ƒ๊ฐ์„ ๊ฐ€์ง€๊ณ  ๊ณ„์…จ์Šต๋‹ˆ๋‹ค.) ํฌ๊ฒŒ ์ฟ ํ‚ค, ์„ธ์…˜, JWT ๋ฐฉ์‹์œผ๋กœ ํšŒ์›๊ฐ€์ž… & ๋กœ๊ทธ์ธ์„ ํ•ด ๋ณด๊ณ , ์ด๊ฒƒ์„ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ์˜ ๋ฐฉ์‹์œผ๋กœ ๊ฐœ์„ ์‹œํ‚ค๋Š” ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ฒซ ๋ฒˆ์งธ ๊ธ€์—์„œ๋Š” ์ฟ ํ‚ค ๋ฐฉ์‹์„ ์ด์šฉํ•œ ํšŒ์›๊ฐ€์ž… & ๋กœ๊ทธ์ธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๋”ฐ๋ผ ํ•  .. 2024. 2. 8.
[Spring REST Docs โœ๏ธ] ์–ด๋ ต๊ฒŒ๋งŒ ๋Š๊ปด์กŒ๋˜ REST Docs๋ฅผ ์ ์šฉํ•ด๋ณด์ž! (1) Spring REST Docs์˜ค๋Š˜์€ ์Šคํ”„๋ง REST Docs์— ๋Œ€ํ•ด ์ ์šฉํ•˜๊ณ , ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์Šคํ”„๋ง์„ ์–ด๋Š ์ •๋„ ์จ ๋ณด๊ณ , ํ…Œ์ŠคํŠธ ๋ฐ ๋ฌธ์„œํ™”๋“ฑ์„ ํ•ด ๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ์Šค์›จ๊ฑฐ๋‚˜ ๋…ธ์…˜, ํฌ์ŠคํŠธ๋งจ์œผ๋กœ API ๋ฌธ์„œ๋ฅผ ๋งŒ๋“  ๊ฒฝํ—˜์ด ์žˆ์œผ์‹ค ํ…๋ฐ์š”, ์Šคํ”„๋ง์— ์žˆ๋Š” REST Docs๋Š” ํ˜„์—…์—์„œ ๋งŽ์ด ์“ฐ๋Š” ๋ฌธ์„œํ™” ์Šคํ‚ฌ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฌธ์„œํ™” ๋„๊ตฌ๋“ค์€ ์Šค์›จ๊ฑฐ์˜ ๊ฒฝ์šฐ ์Šค์›จ๊ฑฐ๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ๊ฐ€ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๋ฌป๋Š”๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ˆ˜์ • ์‹œ ์—…๋ฐ์ดํŠธ ์ƒํƒœ์™€ ๋ฌธ์„œ์˜ ์ƒํƒœ๊ฐ€ ์„œ๋กœ ๋งž์ง€ ์•Š๋Š” ๋ฌธ์ œ ๋“ฑ์ด ์žˆ์—ˆ๋Š”๋ฐ์š”, ์Šคํ”„๋ง REST Docs๋Š” ํ…Œ์ŠคํŠธ, ๋นŒ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ•˜๊ธฐ์— ์‹ฑํฌ๊ฐ€ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ์‹œ์ž‘ํ•˜๋Š” ๋‹จ๊ณ„์—์„œ๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•ด์•ผ ํ• ์ง€ ๊ฐ์ด ์˜ค์‹œ์ง€ ์•Š๋Š” ๋ถ„๋“ค์ด ๋งŽ์„ ๊ฒƒ ๊ฐ™์•„.. 2024. 2. 7.