๋ชฉ๋กBack-end/Spring (28)

DevLog ๐Ÿ˜ถ

[Spring] Rest-docs ์—ฐ๋™ํ•˜๊ธฐ (version 3.3.2)

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์‚ฌ์‹ค rest-docs๋Š” ๋ฏธ์…˜ ์š”๊ตฌ์‚ฌํ•ญ์€ ์•„๋‹ˆ์—ˆ์ง€๋งŒ, ๊ฐœ์ธ์ ์ธ ์š•์‹ฌ์œผ๋กœ ํ•œ ๋ฒˆ ์ง์ ‘ ๊ตฌ์ถ•ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์–ด์„œ ๋ฏธ์…˜ํ•˜๋Š” ๊น€์— ํ•จ๊ป˜ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. (์–ด์ฐจํ”ผ ์ถ”ํ›„ ๋ฏธ์…˜ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ”„๋ก ํŠธ ํฌ๋ฃจ์™€ ํ˜‘์—…ํ•˜๊ฒŒ ๋˜๋ฉด ์„ธํŒ…ํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ...) RestDocs๋ฅผ ์—ฐ๋™ํ•  ๋•Œ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ๋ ˆ๋ฒจ์—์„œ ์ง„ํ–‰ํ• ์ง€ (RestAssured) ์•„๋‹ˆ๋ฉด ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์—์„œ ์ง„ํ–‰ํ• ์ง€ ๊ณ ๋ฏผํ–ˆ์—ˆ๋Š”๋ฐ, RestAssured๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด BDD ์Šคํƒ€์ผ์ด๋ผ ๋” ์ง๊ด€์ ์ผ ๊ฒƒ ๊ฐ™๊ธด ํ•˜์ง€๋งŒ ์•„๋ฌด๋ž˜๋„ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค ๋ณด๋‹ˆ๊นŒ ๊ทธ๋ƒฅ ์ปจํŠธ๋กค๋Ÿฌ ๋ ˆ์ด์–ด์—์„œ ์ง„ํ–‰ํ–ˆ๋‹ค. (์‹ค์ œ๋กœ๋„ ์ปจํŠธ๋กค๋Ÿฌ ๋ ˆ๋ฒจ์—์„œ ๋งŽ์ด ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.) โœ”๏ธ Rest-docs๊ฐ€ ์–ด๋–ค ๊ฑฐ์ง€? Spring Rest Docs๋Š” Restful ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์ •ํ™•ํ•˜๊ณ ..

Back-end/Spring 2023. 5. 22. 13:56
[Spring] ์Šคํ”„๋ง ํ…Œ์ŠคํŠธ - ํ…Œ์ŠคํŠธ ์ปจํ…์ŠคํŠธ ์บ์‹ฑ, @SpringBootTest, @WebMvcTest

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ด์ „ ํฌ์ŠคํŒ…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์Šคํ„ฐ๋””์—์„œ ๋งก์€ 'ํ…Œ์ŠคํŠธ' ํŒŒํŠธ์— ๋Œ€ํ•ด์„œ ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค ๐Ÿ˜Š ํ…Œ์ŠคํŠธ ์ชฝ์€ ๊ณต์‹ ๋ฌธ์„œ๋„ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ€๋…์„ฑ์ด ๋„ˆ๋ฌด ์•ˆ ์ข‹์•„์„œ ์ตœ๋Œ€ํ•œ ๊ฐ„๋žตํ•˜๊ฒŒ๋งŒ ํ›‘์–ด๋ณด์•˜๋‹ค. ์•„์ง ๋ชจ๋ฅด๋Š” ๊ฒŒ ์ •๋ง ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค ใ…Žใ…Ž ๐ŸŒฑ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ vs ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด, ์™ธ๋ถ€ ์ž‘์—…๋“ค๊ณผ ์—ฐ๊ด€๋˜์–ด ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์™ธ๋ถ€ ์ž‘์—…๋“ค์„ ํฌํ•จํ•˜์—ฌ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ž˜ ๋Œ์•„๊ฐ€๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, @SpringBootTest ์–ด๋…ธํ…Œ์ด์…˜์„ ํ™œ์šฉํ•˜์—ฌ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋งŽ๋‹ค. (๊ด€๋ จ๋œ ๋ชจ๋“  ๋นˆ์„ ๊ฐ€์ ธ์™€์„œ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๋Š๋‚Œ) ๋ฐ˜๋ฉด, ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋งž์ถฐ ์ˆ˜ํ–‰ํ•˜๋Š” ํ…Œ์ŠคํŠธ์ด๋‹ค. ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ์˜ ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ E2E ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ฃผ์–ด์ง„ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋”ฐ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ..

Back-end/Spring 2023. 5. 8. 00:50
[Spring] IoC Container์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ DI, ๋นˆ ์Šค์ฝ”ํ”„, ๋นˆ๊ณผ ์Šคํƒœํ‹ฑ ๋ฉ”์„œ๋“œ

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์Šคํ„ฐ๋””์—์„œ ๋ฐœํ‘œ ์ž๋ฃŒ๋กœ ์ค€๋น„ํ–ˆ๋˜ ๋‚ด์šฉ์ธ๋ฐ, ๋ธ”๋กœ๊ทธ์—๋„ ์˜ฎ๊ฒจ๋‘๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ์ •๋ฆฌํ•˜๋Š” ๊ธ€ ๐Ÿ˜Š ํ”„๋กค๋กœ๊ทธ ๋กœ๋“œ๋งต์˜ ํ‚ค์›Œ๋“œ ์œ„์ฃผ๋กœ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค! ๐ŸŒฑ DI (์˜์กด๊ด€๊ณ„ ์ฃผ์ž…) โœ”๏ธ ์˜์กดํ•œ๋‹ค? A๊ฐ€ B๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , B๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด A์— ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ๊ด€๊ณ„. ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•œ๋‹ค. - ํด๋ž˜์Šค ๋ชจ๋ธ์ด๋‚˜ ์ฝ”๋“œ์—๋Š” ๋Ÿฐํƒ€์ž„ ์‹œ์ ์˜ ์˜์กด๊ด€๊ณ„๊ฐ€ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š๋„๋ก, ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์˜์กดํ•ด์•ผ ํ•œ๋‹ค. - ๋Ÿฐํƒ€์ž„ ์‹œ์ ์˜ ์˜์กด๊ด€๊ณ„๋Š” ์ปจํ…Œ์ด๋„ˆ๋‚˜ ํŒฉํ„ฐ๋ฆฌ์™€ ๊ฐ™์€ ์ œ 3์˜ ์กด์žฌ (ex. IoC container)๊ฐ€ ๊ฒฐ์ •ํ•œ๋‹ค. - ์˜์กด๊ด€๊ณ„๋Š” ์‚ฌ์šฉํ•  ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์™ธ๋ถ€์—์„œ ์ œ๊ณตํ•ด์คŒ์œผ๋กœ์„œ ๋งŒ๋“ค์–ด์ง„๋‹ค. โœ”๏ธ DI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌด์—‡์ด ์ข‹์€๊ฐ€? - ๊ฐ์ฒด๊ฐ„์˜ ๊ฒฐํ•ฉ๋„ ๊ฐ์†Œ → ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด..

Back-end/Spring 2023. 5. 7. 18:19
[Spring] ์ž๋ฐ”์˜ inner class๋Š” ์Šคํ”„๋ง ๋นˆ์ด ๋  ์ˆ˜ ์žˆ์„๊นŒ?

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์Šคํ”„๋ง ๋นˆ ๋“ฑ๋ก ๊ณผ์ •์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ์ฐพ์•„๋ณด๋‹ค๊ฐ€, inner class์˜ ๊ฒฝ์šฐ ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋  ์ˆ˜ ์—†๋‹ค๋Š” ๊ธ€์„ ๋ณด์•˜๋‹ค. ๋ญ”๊ฐ€ ๋“ฑ๋ก์ด ๋  ๊ฒƒ ๊ฐ™์€๋ฐ ์•ˆ ๋œ๋‹ค๊ณ  ํ•ด์„œ ์ง์ ‘ ์‹คํ—˜์„ ํ•ด๋ณด์•˜๋‹ค ๐Ÿค” โœ”๏ธ inner class์™€ static class ์šฐ์„ , ๋‘ ๊ฐ€์ง€์— ๋Œ€ํ•œ ๊ฐœ๋…๋ถ€ํ„ฐ ์ œ๋Œ€๋กœ ์žก๊ณ  ๊ฐ€์•ผ ํ•œ๋‹ค. ํ”ํžˆ ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋‘˜์„ ๊ฐ™์€ ๊ฐœ๋…์œผ๋กœ ํ˜ผ๋™ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ •ํ™•ํ•œ ๊ฐœ๋…์„ ์•Œ๊ธฐ ์œ„ํ•ด Oracle ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด๋ณด์ž. ๐ŸŒฑ The Java programming language allows you to define a class within another class. Such a class is called a nes..

Back-end/Spring 2023. 4. 24. 12:25
[Spring] ์Šคํ”„๋ง๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์ƒ๊ด€๊ด€๊ณ„ - DI๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๋ ˆ๋ฒจ 2 ์ˆ˜์—… ์‹œ๊ฐ„์— ์˜์กด์„ฑ ์ฃผ์ž… ๊ด€๋ จ ๋‚ด์šฉ์„ ๋“ค์œผ๋ฉด์„œ ์กฐ๊ธˆ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ๊ทธ๋™์•ˆ ์Šคํ”„๋ง์€ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๊ธฐ ์ข‹์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ๋ง์€ ๋“ค์–ด๋ดค์ง€๋งŒ, ์ •ํ™•ํ•˜๊ฒŒ ์™œ์ธ์ง€๋Š” ์ดํ•ดํ•œ ์ ์ด ์—†์—ˆ๋‹ค. ์ •๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ์กฐ๊ธˆ ๋” ๋จธ๋ฆฌ์—... ๋‹ด์•„๋‘๊ณ ์ž ํ•œ๋‹ค! โœ”๏ธ ๊ฐ์ฒด์ง€ํ–ฅ์  ์„ค๊ณ„๊ณผ ๋””์ž์ธ ํŒจํ„ด ์šฐ์„ , ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™์œผ๋กœ ๋งŽ์ด๋“ค ์–ธ๊ธ‰ํ•˜๋Š” SOLID์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•ด๋ณด์ž. - SRP (๋‹จ์ผ ์ฑ…์ž„ ์›์น™): ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ด์œ ๋Š” ์˜ค์ง ํ•˜๋‚˜๋ฟ์ด์–ด์•ผ ํ•œ๋‹ค. - OCP (๊ฐœ๋ฐฉ ํ์‡„ ์›์น™): ์ž์‹ ์˜ ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ๊ณ , ์ฃผ๋ณ€์˜ ๋ณ€ํ™”์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค. - LSP (๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™): ์„œ๋ธŒ ํƒ€์ž…์€ ํ•ญ์ƒ ์ž์‹ ์˜ ๊ธฐ๋ฐ˜ ํƒ€์ž…์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. - ISP (์ธํ„ฐํŽ˜์ด์Šค..

Back-end/Spring 2023. 4. 18. 17:38
[Spring] Jackson annotation - Serialization ์•Œ์•„๋ณด๊ธฐ

๋ฌธ๋“ ์ง๋ ฌํ™” ๊ด€๋ จํ•ด์„œ ๊ถ๊ธˆํ•ดํ•˜๋‹ค๊ฐ€, Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋„ ํ•œ ๋ฒˆ ๊ณต๋ถ€ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ์ž‘์„ฑํ•˜๋Š” ๊ธ€! ์ •๋ง ๊ฐ„๋‹จํ•˜๊ณ  ์–•๊ฒŒ ์ •๋ฆฌํ•  ์˜ˆ์ •์ด๋ผ, ๋‚˜์ค‘์— ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ํ•œ ๋ฒˆ ๋” ์ž‘์„ฑํ•ด๋ณด์ง€ ์•Š์„๊นŒ ์‹ถ๋‹ค ๐Ÿซ  โœ”๏ธ Serialization Serialization is taking the properties of an object, and converting them into json string representation. ์ง๋ ฌํ™”๋ž€ ๋ฌด์—‡์ผ๊นŒ? ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๊ฐ€์ ธ์™€์„œ Json ๋ฌธ์ž์—ด ํ‘œํ˜„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ •ํ™•ํ•˜๊ฒŒ๋Š”, ๊ฐ์ฒด๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ์ง๋ ฌํ™”๋œ ๊ฐ์ฒด๋Š” ๋‚˜์ค‘์— ๋‹ค์‹œ ๋ณต์›์ด ๊ฐ€๋Šฅํ•˜๋‹ค. public class Crew { private String name; ..

Back-end/Spring 2023. 4. 16. 22:29
[Spring] ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ, ์Šคํ”„๋ง ์ธํ„ฐ์…‰ํ„ฐ, ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๋กœ๊ทธ์ธ ๊ฒ€์ฆํ•˜๊ธฐ

๊น€์˜ํ•œ ๋‹˜์˜ '์Šคํ”„๋ง MVC 2ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ™œ์šฉ ๊ธฐ์ˆ '์„ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค ๐Ÿ˜Š ์Šคํ”„๋ง MVC 2ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ™œ์šฉ ๊ธฐ์ˆ  - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์›น ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MVC 2ํŽธ์—์„œ๋Š” MVC 1ํŽธ์˜ ํ•ต์‹ฌ ์›๋ฆฌ์™€ ๊ตฌ์กฐ ์œ„์— ์‹ค๋ฌด ์›น ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋ชจ๋“  ํ™œ์šฉ ๊ธฐ์ˆ ๋“ค์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ www.inflearn.com ์ง€๋‚œ ํฌ์ŠคํŒ…๊ณผ ์ด์–ด์ง‘๋‹ˆ๋‹ค :D [Spring] ์ƒํ’ˆ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ํšŒ์›๊ฐ€์ž… / ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ๋กœ์ง ์ถ”๊ฐ€ํ•˜๊ธฐ, ์ฟ ํ‚ค๋ฅผ ํ†ตํ•œ ์‹๋ณ„ ์ฒ˜๋ฆฌ ๊น€์˜ํ•œ ๋‹˜์˜ '์Šคํ”„๋ง MVC 2ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ™œ์šฉ ๊ธฐ์ˆ '์„ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค ๐Ÿ˜Š ์Šคํ”„๋ง MVC 2ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ™œ์šฉ ๊ธฐ์ˆ  - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํ•„..

Back-end/Spring 2022. 8. 28. 16:28