๐Ÿ“˜ Programming/Spring 10

DTO ํด๋ž˜์Šค๋ฅผ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์ƒ์„ฑํ•ด์•ผ ์ข‹์„๊นŒ?

DTO ํด๋ž˜์Šค๋ฅผ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ๋งŒ๋“ค์–ด์•ผํ• ์ง€ ๊ณ ๋ฏผ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ์ฃผ๋ณ€ ๋„ค์ด๋ฒ„, ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ์นœ๊ตฌ๋“ค์˜ ์˜๊ฒฌ๊ณผ ์ €์™€ ๊ฐ™์€ SI/SM ๊ธฐ์—… ๊ฐœ๋ฐœ์ž์˜ ์˜๊ฒฌ์ด ์‚ฌ๋ญ‡ ๋‹ฌ๋ผ์„œ ์ •๋ฆฌํ•˜๊ณ ์ž ๊ธ€์„ ์ž‘์„ฑํ•ด๋ด…๋‹ˆ๋‹ค. DTO ํด๋ž˜์Šค๋ฅผ ๋ชฉ์ ๋งˆ๋‹ค ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค ! ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๋ฉด ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ ๊ธฐ๋Šฅ๊ณผ ๋Œ“๊ธ€ ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ธฐ๋Šฅ๋ณ„๋กœ DTO ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ช…ํ™•ํ•œ ๋ชฉ์ ์ด ์žˆ์–ด ๋‹ค๋ฅธ API์˜ ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต์— ์˜ํ–ฅ์ด ์—†๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํด๋ž˜์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์ ธ์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ œ๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ํ–ˆ๋˜ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฌด์–ธ๊ฐ€ ํŒŒ์ผ์ด ๋งŽ์•„์ง€๋ฉด์„œ ์žˆ์–ด๋ณด์ด๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด ๋งค๋ ฅ์ ์ด๋ผ ์ƒ๊ฐ์ด ๋“ญ..

Swag ๋„˜์น˜๊ฒŒ ์†Œํ†ตํ•ด๋ณด์ž! Swagger in SpringBoot 3.x ์ •๋ณต (SpringFox, SpringDoc, API ๋ฌธ์„œ ์ž๋™ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•)

์˜ค๋žœ๋งŒ์— ํฌ์ŠคํŒ…ํ•˜๋Š” ์ด์œ ๋Š” ํ•œ๋™์•ˆ ๋ณ„ ํƒˆ ์—†์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ด์–ด๊ฐ€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—.. ์ƒˆ๋กญ๊ฒŒ ๋ฌด์–ธ๊ฐ€๋ฅผ ์•Œ์•„๊ฐ€๊ฑฐ๋‚˜ ๋ณต์Šตํ•˜๋Š” ์ผ์ด ์ ์—ˆ์Šต๋‹ˆ๋‹ค..^^ ์˜ค๋Š˜์€ Swaager ์‚ฌ์šฉ ๋„์ค‘์— ๊ถ๊ธˆํ•œ ์ ์ด ๋งŽ์•„์ง€๋ฉด์„œ ์กฐ์‚ฌํ•œ ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. Swagger ๋“ฑ์žฅ ์ „๊ณผ ํ›„ ์ฐจ์ด๋Š”? Swagger๊ฐ€ ์„ธ์ƒ์— ๋“ฑ์žฅํ•˜๊ธฐ ์ „, ๊ฐœ๋ฐœ์ž ๊ฐ„ ์†Œํ†ต ๋ฐฉ์‹์€ ๋‹จ์ˆœํ•˜๊ฒŒ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ URL ๋ฐ Request, Response๋ฅผ ์ง์ ‘ ๋ฌธ์„œํ™”ํ•ด์„œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์œ„ํ•œ API ๋ช…์„ธ ๋ฐ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ๊ฐ ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ํ•„์—ฐ์ ์ธ ์ฑ…์ž„์ด ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” API ๊ตฌํ˜„์— ์žˆ์–ด์„œ ์–ด๋– ํ•œ ์‹ค์ˆ˜๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ์„ ์™„๋ฒฝํžˆ ์ด..

[Spring Framework] 3. ์–ด๋…ธํ…Œ์ด์…˜(Annotation) ๊ธฐ๋ฐ˜์˜ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ๋ฐฉ๋ฒ• ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ (4)

ํ•™์Šต ๋ชฉํ‘œ 1. '์˜์กด์„ฑ ์ฃผ์ž…' ๊ธฐ๋ณธ ๊ฐœ๋… ์ดํ•ด 2. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์™€ ApplicationContext ์ดํ•ด 3-1. XML ํŒŒ์ผ์„ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ• 3-2. Annotation์„ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ• 3-3. Java๋ฅผ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ• 4. Bean ๊ฐ์ฒด์˜ Scope์™€ LifeCycle ์ดํ•ด Annotation ๊ธฐ๋ฐ˜ DI ๊ตฌ์„ฑ ์–ด๋…ธํ…Œ์ด์…˜ (Annotation) ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ XML ๋“ฑ์˜ ๋ฌธ์„œ์— ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์†Œ์Šค์ฝ”๋“œ์— @~์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ ํด๋ž˜์Šค, ๋ฉ”์†Œ๋“œ ,ํ•„๋“œ์˜ ์„ ์–ธ๋ถ€์— ํ‘œํ˜„ํ•˜์—ฌ ํŠน์ • ๊ธฐ๋Šฅ์ด ์ ์šฉ๋˜์—ˆ์Œ์„ ์•Œ๋ฆผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก XML ์„ค์ •์ด ๋ณต์žกํ•ด ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๊ฐœ์„  ์ฃผ์š” ์–ด๋…ธํ…Œ์ด์…˜ @Autowired (@Inject, @Res..

[Spring Framework] 3. XML ๊ธฐ๋ฐ˜์˜ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ๋ฐฉ๋ฒ• ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ (3)

ํ•™์Šต ๋ชฉํ‘œ 1. '์˜์กด์„ฑ ์ฃผ์ž…' ๊ธฐ๋ณธ ๊ฐœ๋… ์ดํ•ด 2. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์™€ ApplicationContext ์ดํ•ด 3-1. XML ํŒŒ์ผ์„ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ• 3-2. Annotation์„ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ• 3-3. Java๋ฅผ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ• 4. Bean ๊ฐ์ฒด์˜ Scope์™€ LifeCycle ์ดํ•ด XML ๊ธฐ๋ฐ˜ DI ๊ตฌ์„ฑ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ํ™˜๊ฒฝ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ๋„ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์ˆ˜์ • Java ๋ฒ„์ „ ๋ณ€๊ฒฝ ์˜์กด์„ฑ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ (pom.xml) spring-context → ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ๋ฒ„์ „ ์ ์šฉ (mvnrepositroy.com ์ฐธ๊ณ ) ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ ์ ์šฉ → slf4j-api, logback-classic ์ ์šฉ applicationCo..

[Spring Framework] 3. DI์™€ ์Šคํ”„๋ง ๋นˆ(Bean), ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ(Container)์˜ ๊ด€๊ณ„ (2)

ํ•™์Šต ๋ชฉํ‘œ 1. '์˜์กด์„ฑ ์ฃผ์ž…' ๊ธฐ๋ณธ ๊ฐœ๋… ์ดํ•ด 2. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์™€ ApplicationContext ์ดํ•ด 3-1. XML ํŒŒ์ผ์„ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ• 3-2. Annotation์„ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ• 3-3. Java๋ฅผ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ• 4. Bean ๊ฐ์ฒด์˜ Scope์™€ LifeCycle ์ดํ•ด ApplicationContext ์™€ Bean ์Šคํ”„๋ง ๋นˆ (Spring Bean)๊ณผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์Šคํ”„๋ง ๋นˆ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด IoC ์ปจํ…Œ์ด๋„ˆ ์Šคํ”„๋ง ๋นˆ์˜ ์ƒ์„ฑ, ๊ด€๊ณ„, ์กฐ๋ฆฝ, ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌ DI์„ ์ด์šฉํ•ด ์ปดํฌ๋„ŒํŠธ ๊ด€๋ฆฌ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ BeanFactory DI ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์ œ๊ณต → Bean์˜ ์ƒ์„ฑ, ์˜์กด ๊ด€๊ณ„ ๊ด€๋ฆฌ Bean์ด ๋งŽ์ง€ ์•Š๊ณ  ๊ฒฝ..