Dev-Kyuu
article thumbnail
[๊ธฐ์ˆ ๋ฉด์ ‘์Šคํ„ฐ๋””] Filter / Interceptor / AOP ์ •์˜์™€ ์ฐจ์ด์ 
๐ŸŒฝ Spring 2023. 2. 23. 13:47

๐Ÿ“ข ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋ชจ์•„์„œ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• (AOP, InterCeptor, Filter) ๊ณตํ†ต์—…๋ฌด๋ฅผ ํ”„๋กœ๊ทธ๋žจ ํ๋ฆ„ ์•ž, ์ค‘๊ฐ„, ๋’ค์— ์ถ”๊ฐ€ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹. → ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ Logging, ์ธ์ฆ, ์ธ๊ฐ€, ์ธ์ฝ”๋”ฉ ๋ณ€ํ™˜๋“ฑ์ด ์žˆ์Œ Interceptor์™€ Filter๋Š” Servlet ๋‹จ์œ„์—์„œ ์‹คํ–‰๋˜๊ณ , AOP๋Š” ๋ฉ”์„œ๋“œ์•ž์— ProxyํŒจํ„ด์˜ ํ˜•ํƒœ๋กœ ์‹คํ–‰๋จ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด Filter → Interceptor → AOP → Interceptor → Filter์ˆœ์œผ๋กœ ๊ฑฐ์น˜๊ฒŒ ๋จ ๐Ÿ“˜ Filter ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ฑฐ๋ฅธ ๋’ค ์ •์ œํ•˜๋Š” ์—ญํ• ์„ ํ•จ ํ•„ํ„ฐ๊ฐ€ ๋™์ž‘ํ•˜๋„๋ก ์ง€์ •๋œ ์ž์›์˜ ์•ž๋‹จ์—์„œ ์š”์ฒญ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ฒดํฌ๋ฅผ ์ˆ˜ํ–‰ ์ž์›์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚œ ํ›„ ์‘๋‹ต ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ๋„ ๋ณ€๊ฒฝํ•˜๋Š” ์ฒ˜๋ฆฌ๋„ ํ•จ..

article thumbnail
[๊ธฐ์ˆ ๋ฉด์ ‘์Šคํ„ฐ๋””] DI ํ•„๋“œ vs ์ƒ์„ฑ์ž ์ฃผ์ž… ๋ฐฉ์‹
๐ŸŒฝ Spring 2023. 2. 23. 11:15

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

article thumbnail
|Spring & OAuth2| ์นด์นด์˜ค ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… Postman์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๊ธฐ
๐ŸŒฝ Spring 2022. 12. 26. 21:17

์ด๋ฒˆ์ฃผ๋Š” ํด๋ก ์ฝ”๋”ฉ ์ฃผ์ฐจ๋กœ ์šฐ๋ฆฌํŒ€์€ ์›ํ‹ฐ๋“œ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํด๋ก ์ฝ”๋”ฉ ํ•˜๊ธฐ๋กœํ•˜์˜€๋‹ค โŒจ๏ธ ๋‚ด๊ฐ€ ๋งก์€ ๊ธฐ๋Šฅ์€ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๐Ÿ˜Ž ์‹œ์ž‘์€ ์‰ฌ์› ์œผ๋‚˜ ํ…Œ์ŠคํŠธ๋ถ€ํ„ฐ ์‰ฝ์ง€ ์•Š์•„์ ธ์„œ ์ขŒ์ ˆํ•˜๊ณ  ์žˆ๋Š” ์™€์ค‘์— ์ฒœ์‚ฌ ์˜์˜๋‹˜์˜ ๋•๋ถ„์œผ๋กœ ๋ฌด์‹œ๋ฌด์‹œํ•œ ์—๋Ÿฌ์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  .. ๋‹ค์‹œ๋Š” ๋˜‘๊ฐ™์€ ์ผ์„ ๊ฒช์ง€์œ„ํ•ด ํ•˜๋Š” ํฌ์ŠคํŒ… .. ์žŠ์ง€๋งˆ .. ! ๊ธฐ์–ตํ•ด ๋‚ด ..! ๐Ÿ™‹๐Ÿป ๋„์™€์ค˜ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ! ์šฐ์„  ๋‚˜๋Š” ํ”„๋ก ํŠธ์™€ ์—ฐ๊ฒฐ ์ „, ๋ˆˆ์— ๋ณด์ด๋Š” ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์ด ์—†๋Š” ์ƒํƒœ์—์„œ์˜ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ์‹œ๋„ ๋ฐฉ์‹์„ ์ ์–ด๋‘๋ ค๊ณ ํ•œ๋‹ค. ๋ฒ„ํŠผ์ด ์žˆ์œผ๋ฉด ๋ณ„๋กœ ์–ด๋ ต์ง€์•Š์›€ !.. ์•„๋งˆ๋‘ ,, ์šฐ์„  ์‚ฌ์šฉํ•œ ์†Œ์Šค์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 1 | User Controller @PostMapping("/loginKakao") public MsgResponseDto kakaoLogin(@Requ..

article thumbnail
Spring | @Transactional์ด ๋ญ”๋ฐ
๐ŸŒฝ Spring 2022. 12. 15. 00:53

๐Ÿ—„ ํŠธ๋žœ์žญ์…˜? ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‚˜, ์œ ์‚ฌํ•œ ์‹œ์Šคํ…œ์—์„œ์˜ ์ƒํ˜ธ์ž‘์šฉ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ํŠธ๋žœ์žญ์…˜์„ ์ ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ๊ฐฑ์‹ , ์‚ญ์ œ ๋“ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ ์ฒ˜๋ฆฌ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ชจ๋“  ์ž‘์—…์„ ์›์ƒํƒœ๋กœ ๋˜๋Œ๋ ค์ฃผ๊ณ , ๋ชจ๋“  ์ž‘์—…์ด ์„ฑ๊ณตํ•ด์•ผ๋งŒ ์ตœ์ข…์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ํ•จ ์Šคํ”„๋ง์€ ์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•œ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค. ๐ŸŒ€Transactional ์–ด๋…ธํ…Œ์ด์…˜ ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜์€ ํด๋ž˜์Šค๋‚˜, ๋ฉ”์„œ๋“œ์— ๋ถ™์—ฌ์ค„ ๊ฒจ์šฐ ํ•ด๋‹น ๋ฒ”์œ„ ๋‚ด ๋ฉ”์„œ๋“œ๊ฐ€ ํŠธ๋žœ์žญ์…˜์ด ๋˜๋„๋ก ๋ณด์žฅํ•œ๋‹ค. ์ด์™€๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์„ ์„ ์–ธ์  ํŠธ๋žœ์žญ์…˜์ด๋ผ๊ณ ํ•˜๊ณ , ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ํ•„์š” ์—†์ด ์„ ์–ธ๋งŒ์œผ๋กœ ๊ด€๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค. โ“ Transactional ์–ด๋…ธํ…Œ์ด์…˜์˜ ์ž‘๋™ ์›๋ฆฌ์™€ ํ๋ฆ„ @Transactional์ด ๋ถ™์€ ๋ฉ”์„œ๋“œ..

article thumbnail
Spring | AOP๊ฐ€ ๋ญ”๋ฐ
๐ŸŒฝ Spring 2022. 12. 15. 00:33

๐ŸŽŸ AOP ? : AOP(Aspect Oriented Programming) ๊ด€์ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ์–ด๋–ค ๋กœ์ง์„ ๊ธฐ์ค€์œผ๋กœ ํ•ต์‹ฌ์ ์ธ ๊ด€์ , ๋ถ€๊ฐ€์ ์ธ ๊ด€์ ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ทธ ๊ด€์ ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ๊ฐ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ• ์œ„ ๊ทธ๋ฆผ์— ์žˆ๋Š” ๋ธ”๋Ÿญ๋“ค ์ฒ˜๋Ÿผ ์†Œ์Šค์ฝ”๋“œ ์ƒ์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋“ค์„ ํฉ์–ด์ง„ ๊ด€์‹ฌ์‚ฌ๋ผ๊ณ ํ•˜๊ณ , ํฉ์–ด์ง„ ๊ด€์‹ฌ์‚ฌ๋ฅผ Aspect๋กœ ๋ชจ๋“ˆํ™” + ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ๋ถ„๋ฆฌํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด AOP์˜ ์ทจ์ง€์ด๋‹ค. โœจ AOP๋กœ ๋‚˜๋‰˜์–ด์ง€๋Š” ๊ฐœ๋ฐœ์˜ ๋‘ ์ข…๋ฅ˜ ๊ด€์  : ์—…๋ฌด : ์—…๋ฌด ์ด์™ธ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ(๋กœ์ง, ์˜ˆ์™ธ์ฒ˜๋ฆฌ) ๐Ÿ“ Aspect? : ํฉ์–ด์ง„ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ฌถ์–ด์„œ ๋ชจ๋“ˆํ™” ํ•œ๊ฒƒ์œผ๋กœ Advice์™€ Point Cut์ด ๋“ค์–ด๊ฐ„๋‹ค. - Advice : ํ•ด์•ผํ• ์ผ๋“ค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ - Join Point : ๋ฉ”์„œ๋“œ ์‹ค..

article thumbnail
Spring | DI, IOC๊ฐ€ ๋ญ”๋ฐ
๐ŸŒฝ Spring 2022. 12. 8. 01:40

์Šคํ”„๋ง์„ ํ•˜๋‹ค๋ณด๋ฉด ์ง„์งœ ๋„ˆ์–ด์–ด์–ด์–ด์–ด๋ฌด ๋„ˆ์–ด์–ด์–ด์–ด์–ด์–ด๋ฌด ๋ฌด์‹œํ•˜๊ณ ์‹ถ์ง€๋งŒ ๋“ค์ˆจ์— IOC,, ๋‚ ์ˆจ์— DI๊ฐ€ ๊ณ„์—์—์—์—์—์† ๋‚˜์™€์„œ ์ด๊ฑธ ์ด์ œ ๋”์ด์ƒ ๋ฌด์‹œํ•˜๊ณ  ์ง€๋‚˜๊ฐˆ์ˆ˜ ์—†์„ ์ •๋„๋กœ ๋‚˜์˜จ๋‹ค. ์ด๊ฑธ ๋ชจ๋ฅด๋ฉด ์Šคํ”„๋ง์„ ๋ชจ๋ฅด๋‚˜์š” !?!?!?!? ์˜ ๋‹ต์€ Yes ์ธ๊ฐ€๋ณด๋‹ค ใ…‹.. ๊ทธ๋ž˜์„œ ์•ฝ 2์ฃผ๊ฐ„ ์™ธ๋ฉดํ–ˆ์ง€๋งŒ ์˜ค๋Š˜์€ ํฐ๋งˆ์Œ์„ ๋จน๊ณ  ์ง๋ฉดํ•˜๊ธฐ๋กœํ–ˆ๋‹ค. ๋„๋Œ€์ฒด IOC, DI๊ฐ€ ๋ญ”๋ฐ ์ด๋ ‡๊ฒŒ ์งˆ์ฒ™์ด๋Š”๊ฑด๋ฐ ! ๐Ÿ˜ง ๐Ÿ”Ž ๊ทธ๋ž˜์„œ DI, IOC๊ฐ€ ๋ญ”๋ฐ? Dependency Injection(์˜์กด์„ฑ ์ฃผ์ž…) ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐ์ฒด๋“ค์˜ ์กฐ๋ฆฝ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ, ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ผ์ฒดํ˜• ํ˜•์‹๊ณผ ์กฐ๋ฆฝํ˜• ํ˜•์‹์ด ์žˆ๋‹ค. ์ผ์ฒดํ˜• : ๋ถ€ํ’ˆ(dependency) B๋ฅผ A์—์„œ ์ง์ ‘ ์ œ์–ดํ•˜์—ฌ B์˜ ๊ฐ์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด, B์˜ ๊ฐ์ฒด๋„ ๋ณ€๊ฒฝ๋˜๊ฒŒ ๋œ๋‹ค. : ๊ฒฐํ•ฉ๋ ฅ์ด ๋†’์•„์„œ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ๋ฐ”..

Etc. 01 | Enterprise Application
๐ŸŒฝ Spring 2022. 12. 6. 01:47

์ด๋ฒˆ์ฃผ๋ถ€ํ„ฐ [์Šคํ”„๋ง ์ž…๋ฌธ์„ ์œ„ํ•œ ์ž๋ฐ” ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ์›๋ฆฌ์™€ ์ดํ•ด]๋ผ๋Š” ์ฑ…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ๋กœํ•˜์˜€๋‹ค. ์ƒ๊ฐ๋งŒ ํ•˜๊ณ  ๊ตฌ๋งคํ•˜์ง„ ์•Š๊ณ  ํ•˜๋ฃจ ์ดํ‹€ ํ์ง€๋ถ€์ง€ ์ง€๋‚˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๋˜ ๋‚˜๋ฅผ ์ผ๊นจ์›Œ์ฃผ์‹  ๋™๊ธฐ๋‹˜๊ป˜ ๋ฌดํ•œํ•œ ๊ฐ์‚ฌ๋ฅผ ... ๐Ÿ–ค ๋ชฉํ‘œ๋Š” ๋งŒ๋‚˜๊ธฐ์ „์— ํ•œ ์ฑ•ํ„ฐ์”ฉ ์ฝ๊ณ  ๊ฐ์ž ๊ณต์œ ํ•˜๊ณ ์‹ถ์€ ๋ถ€๋ถ„ ์ •๋ฆฌํ•ด์˜ค๊ธฐ! ์˜ค๋Š˜์˜ ํ‚ค์›Œ๋“œ๋Š” '์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜' ์ด๋‹ค. ๐Ÿ”Ž ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ด€๊ณ„ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„ ์›Œํฌ์˜ ์‚ฌ์šฉ ๋ชฉ์ ์€ ? : ์ž๋ฐ” ๊ธฐ๋ฐ˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์œ„ํ•œ ํฌ๊ด„์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐ ๊ตฌ์„ฑ ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— : ์ฃผ์š” ๋ชฉํ‘œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์„ ์—ฐ๊ฒฐํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ธฐ์ˆ ์„ ์ œ๊ณตํ•˜๊ณ , ์ „๋‹ด ์ฒ˜๋ฆฌ ํ•˜๋Š” ๊ฒƒ ๊ทธ๋Ÿผ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ? : ์—”ํ„ฐํ”„๋ผ..

Spring | @Bean์ด ๋ญ”๋ฐ
๐ŸŒฝ Spring 2022. 12. 5. 00:27

๐Ÿซ˜ ์Šคํ”„๋ง Bean ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž ๋นˆ(Bean)์€ IOC ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๊ณ ์žˆ๋Š” ์ž๋ฐ”์˜ ๊ฐ์ฒด๋ฅผ ๋นˆ์ด๋ผ๊ณ  ํ•œ๋‹ค. (+) new ์—ฐ์‚ฐ์ž๋กœ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋Š” ๋นˆ์ด ์•„๋‹˜! Spring์—์„œ์˜ ๋นˆ์€ ApplicationContext๊ฐ€ ์•Œ๊ณ ์žˆ๋Š” ๊ฐ์ฒด(=ApplicationContext๊ฐ€ ๋งŒ๋“ค๊ณ , ๊ทธ ์•ˆ์— ๋‹ด๊ณ ์žˆ๋Š” ๊ฐ์ฒด)๋ฅผ ์–˜๊ธฐํ•˜๋Š”๋ฐ IOC ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌ๊ฐ๋…ํ•˜๋Š” ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. 1๏ธโƒฃ Component Scan์„ ํ†ตํ•œ Bean๋“ฑ๋ก : @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ๋“ฑ๋กํ•œ ๊ฒฝ์šฐ์—๋Š” Spring์ด ์–ด๋…ธํ…Œ์ด์…˜์„ ํ™•์ธํ•˜์—ฌ ์ด ๊ฐ์ฒด๋Š” Bean์ด์•ผ!ํ•˜๊ณ  ๋“ฑ๋กํ•œ๋‹ค. *) Component ์™ธ์—๋„ ์ปดํฌ๋„ŒํŠธ ์–ด๋…ธํ…Œ์ด์…˜์˜ ์ƒ์†์„ ๋ฐ›๋Š” @Controller, @Service, @Reposi..

Spring skill 01 | ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ€(Authorization)
๐ŸŒฝ Spring 2022. 12. 4. 01:48

์Šคํ”„๋ง ์ˆ™๋ จ์„ ์˜์–ด๋กœํ•˜๋ฉด Spring Skill ์ด๋ž€๋‹ค ์งฑ ๋ฉ‹ ใ…‹ ์ด๋ฒˆ ์กฐ๋ณ„๊ณผ์ œ๋„ ๋งค์ผ ํ‚ค์›Œ๋“œ ํ•˜๋‚˜์”ฉ ๊ณต๋ถ€ํ•˜๋Š”๊ฑธ๋กœ ํ•ด๋ด์•ผ๊ฒ ๋‹ค ๋‚œ ๋งค์ผ ์กฐ๊ธˆ์”ฉ ํ•˜๋Š”๊ฒŒ ์ข‹์•„ ๐Ÿ˜Ž ๐Ÿ” 1. ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ๋ญ๊ฐ€ ๋‹ค๋ฅธ๊ฑด๋ฐ? IT ๋ณด์•ˆ ์—…๊ณ„์—์„œ ์ผํ•˜๋ฉด์„œ 3A๋Š” ์ผํ•˜๋ฉด์„œ ์ˆ˜๋‘๋ฃฉ ๋ฐฑ-๋ฐฑ ํ—ˆ๊ฒŒ ๋“ค์–ด๋ดค๋‹ค. AAA๊ฐ€ ๋ฌด์—‡์„ ๋œปํ•˜๋ƒ๋ฉด Authentication(์ธ์ฆ), Authorization(๊ถŒํ•œ), Accounting(๊ณ„์ •๊ด€๋ฆฌ)๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ์ค‘์—์„œ ์ธ์ฆ๊ณผ ์ธ๊ฐ€์— ๋Œ€ํ•ด ๋‹ค์‹œ ๋ณต๊ธฐํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ธ์ฆ๊ณผ ์ธ๊ฐ€์˜ ์ •์˜ ์ธ์ฆ(Authentication) : ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ๋ณธ์ธ์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ • ์ธ๊ฐ€(Authorization) : ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋Š” ์ž์›์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š”๊ฐ€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ณผ์ • ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์ธ..

article thumbnail
Spring | ์˜์†์„ฑ์ด ๋ญ”๋ฐ
๐ŸŒฝ Spring 2022. 12. 1. 00:41

์ œ๋ชฉ์€ ๋‚ด๊ฐ€ ์š”์ฆ˜ ๊ตฌ๊ธ€๋งํ• ๋•Œ ์•„์ฃผ ์• ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์ธ๋ฐ ใ…‡ใ…‡๊ฐ€ ๋ญ”๋ฐ ๋ผ๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค ๊ทผ๋ฐ ์ง„์งœ ๊ฑฐ์ง“๋ง ์•ˆํ•˜๊ณ  ์ด๊ฑธ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‚˜์˜ ์ˆ˜์ค€๊ณผ ๋น„์Šทํ•œ๋ถ„๋“ค์ด ํ•œ ๋งบํ˜€์„œ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ์‹  ํฌ์ŠคํŒ…๋“ค์ด ์žˆ์Œ ๋‚˜๋„ ์ƒˆ๋กœ ์•Œ๊ฒŒ๋œ ์ง€์‹์„ ์ •๋ฆฌํ•˜๋Š” ํฌ์ŠคํŒ…์€ ์ด ํ‚ค์›Œ๋“œ๋กœ ์จ๋ณผ๊นŒ ํ•จ ์ด๊ฑธ ์ฐพ์•„๋ณด๊ฒŒ ๋œ ๊ณ„๊ธฐ๋Š” ์›”์š”์ผ ๊ธฐ์ˆ  ๋งค๋‹ˆ์ €๋‹˜ ์ˆœํšŒ๋•Œ ์šฐ๋ฆฌ์กฐ ๋Œ€์žฅ๋‹˜์˜ ์ง„ํ–‰๋„๋ฅผ ๋ณด๊ณ  ๊ธฐ์ˆ ๋งค๋‹ˆ์ €๋‹˜์ด CRUD ๊ธฐ๋Šฅ์„ ๋‹ค ๊ตฌํ˜„ํ•˜์…จ์œผ๋ฉด ์„œ๋น„์Šค์—์„œ @Transection ์–ด๋…ธํ…Œ์ด์…˜์„ ์ œ์™ธํ•˜๊ณ  ๊ตฌํ˜„ํ•ด๋ณด์„ธ์š” ~ ๋ผ๊ณ  ํžŒํŠธ๋Š” ์˜์†์„ฑ์ž…๋‹ˆ๋‹ค! ๋ผ๊ณ  ์•Œ๋ ค์ฃผ์…”์„œ ์ฐพ์•„๋ณด๊ฒŒ๋˜์—ˆ๋‹ค. ์‚ฌ์‹ค ์•ž๋’ค ๋‹ค ์กฐ์–ธํ•ด์ฃผ์‹ ๊ฒŒ ์ƒ๊ฐ์ด ๋‚˜์งˆ ์•Š์•˜๋˜ ๋‚˜๋Š” ์†Œ์Šค์ฝ”๋“œ์—์„œ ๋ฐ”์•„๋กœ ํŠธ๋žœ์žญ์…˜ ์–ด๋…ธํ…Œ์ด์…˜๋งŒ ๋นผ๋ณด๊ณ  ใ…‹ใ…‹ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ์ž˜ ์•ˆ๋˜๋Š” ๊ฒƒ ์ฐพ์•„๋ณด๋‹ˆ Transectional ์–ด๋…ธํ…Œ์ด์…˜ ์—†์ด UPdate๋ฅผ..

Spring | Annotation์ด ๋ญ”๋ฐ
๐ŸŒฝ Spring 2022. 11. 30. 21:51

๐ŸŒ€Annotation ์–ด๋…ธํ…Œ์ด์…˜์€ ์‚ฌ์ „์ ์œผ๋กœ๋Š” "์ฃผ์„"์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ž๋ฐ” ์ฝ”๋“œ์— @๋ฅผ ์ด์šฉํ•ด ์ฃผ์„์ฒ˜๋Ÿผ ๋‹ฌ์•„ ํŠน์ˆ˜ํ•œ ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์— ๊ด€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์ฝ”๋“œ์— ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ •ํ˜•ํ™”๋œ ๋ฐฉ๋ฒ•์ด๋‹ค. ๐ŸŒ€ SpringBootApplication Spring Boot๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜ 1) @ComponentScan์„ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๋“ค์„ Bean์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค 2) @EnableAutoConfiguration์„ ํ†ตํ•ด ๋ฏธ๋ฆฌ ์ •์˜ํ•ด๋‘” ์ž๋ฐ” ์„ค์ •ํŒŒ์ผ๋“ค์„ Bean์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค. * Spring Bean์ด๋ž€ : Spring IOC ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ƒ์„ฑ๋˜๊ณ , ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ Bean ์ด๋ผ๊ณ  ํ•จ @Configuration : ์Šคํ”„๋ง IOC ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ํ•ด๋‹น..

article thumbnail
Spring Introduction 03 | Rest ๊ทธ๋ฆฌ๊ณ  Put/Patch
๐ŸŒฝ Spring 2022. 11. 30. 09:40

๐Ÿ˜ถ‍๐ŸŒซ๏ธ 1. Rest REST๋ž€ REpresentational State Tranfer์˜ ์ค€๋ง๋กœ, ์ž์›์„ ์ •์˜ํ•˜๊ณ  ์ž์›์— ๋Œ€ํ•œ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ „๋ฐ˜์— ๋Œ€ํ•œ ๊ทœ์น™ REST ์™œ ์“ฐ๋Š”๊ฑด๋ฐ? ์‹œ์Šคํ…œ ๋ถ„์‚ฐ - RESTfull API๋ฅผ ์ง€ํ‚ค๊ธฐ๋งŒ ํ•˜๋ฉด ์ƒํ˜ธ๊ฐ„์˜ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•ด์ ธ์„œ ํฐ ๊ทœ๋ชจ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€์‘ - RESTfull API๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋งŒ ์ฃผ๊ณ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋ฒผ์›Œ์กŒ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€์‘์ด ๊ฐ€๋Šฅํ•ด์ง โœ๏ธ 2. Put๊ณผ Patch์˜ ์ฐจ์ด PUT๊ณผ PATCH ๋ฉ”์„œ๋“œ๋Š” ์ž์›์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹ค์‹œํ•˜๋Š” HTTP ๋ฉ”์„œ๋“œ์ด๋‹ค. ๋‘ ๋ฉ”์„œ๋“œ ๋‹ค ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์นซ ์ž˜๋ชป์“ฐ๊ธฐ ์‰ฌ์šด๋ฐ ์ด ๋‘ ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด๋Š” ๐Ÿ‘‡๐Ÿป put ์š”์ฒญ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์‚ฌ..

article thumbnail
Spring Introduction 02 | ์Šคํ”„๋ง ํด๋” ๊ตฌ์กฐ
๐ŸŒฝ Spring 2022. 11. 29. 09:21

๐ŸŒฝ 1. ์Šคํ”„๋ง์˜ ํด๋” ๊ตฌ์กฐ - ์Šคํ”„๋ง ํด๋”๋ฅผ ๋งŒ๋“ค๋•Œ Controller, Service, Repository .. ๋“ฑ ์ด๊ฒŒ ๋‹ค ๋ฌด์—‡์ธ๊ณ  ? ํ•˜๋ฉด์„œ ๋จธ๋ฆฌ๊ฐ€ ์•„ํŒ ๋‹ค. - ๊ทธ๋ž˜์„œ ์ •๋ฆฌํ•ด ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ๋Œ€๋žต์ ์œผ๋กœ ํด๋”์— ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์€ ์œ„์™€ ๊ฐ™๊ณ , ๋ณด์‹œ๋Š” ๋ถ„ ๋“ค์ค‘์— ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‡ผ ์–ธ์ œ๋“ ์ง€ ์ˆ˜์ • ํ™˜์˜ โœจ ์ถ”๊ฐ€์ ์ธ ์„ค๋ช…์€ ์ง€๋‚œ๋ฒˆ ํฌ์ŠคํŒ…์„ ์ธ์šฉํ•˜์—ฌ ์ œ์ผ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ธ Controller, Service, Repository ์„ ๋ณต๊ธฐํ•ด๋ณด๋ฉด ๐Ÿซฅ Controller Controller๋Š” ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. Model๊ณผ View๋Š” ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์ง€ ์•Š์•„์„œ Controller๊ฐ€ ์ด๋“ค์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•จ ํ”„๋กœ์„ธ์Šค : ์‚ฌ์šฉ์ž ์š”์ฒญ ๐Ÿ‘‰ Controller ๐Ÿ‘‰ Model ๐Ÿ‘‰ View Rep..

Spring | JPA ?
๐ŸŒฝ Spring 2022. 11. 28. 10:02

๐Ÿง‘๐Ÿป‍๐Ÿ’ป 1. JPA? ์˜ค๋Š˜์˜ ํ‚ค์›Œ๋“œ JPA๋Š” Java Persistence API์˜ ์ค„์ž„๋ง๋กœ "์ž๋ฐ” ์ง„์˜์˜ ORM ํ‘œ์ค€ ๊ธฐ์ˆ "์ด๋ผ๊ณ  ํ•œ๋‹ค. Java ๊ฐ์ฒด์˜ ์˜์†์„ฑ์„ ์œ„ํ•œ ์ž๋ฐ”์˜ ํ‘œ์ค€ํ™”๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋งํ•˜๋Š” ๊ฒƒ ๊ทธ๋Ÿผ ๋˜ ORM์€ ๋ญ๋ƒ๋ฉด Object-relationla Mapping ์œผ๋กœ ๊ฐ์ฒด๋ž‘ ๊ด€๊ณ„ํ˜• DB๋ฅผ ๋งคํ•‘ํ•ด์ฃผ๋Š” ํ”„๋ ˆ์ž„ ์›Œํฌ๋‹ค ๊ทธ๋Ÿผ ์—ฌ๊ธฐ์„œ ๋˜ ๊ด€๊ณ„ํ˜• DB๋ž€ ? - 2์ฐจ์› ํ…Œ์ด๋ธ”(Table) ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ํ‚ค์™€ ๊ฐ’์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - ์ข…์†์„ฑ์„ ๊ด€๊ณ„๋กœ ํ‘œํ˜„ํ•˜๋Š”๊ฒƒ์ด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ง•์ž„ - ํ˜„์žฌ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” Oracle, MySQL, SQL Server๋“ฑ์ด ๋‹ค ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๐Ÿ” 2. ๊ทธ๋Ÿผ JPA๋ฅผ ์™œ ์‚ฌ์šฉํ• ๊นŒ? ์š”์ฆ˜ ์ƒˆ๋กœ ๋ฐฐ์šฐ๋Š” ๊ฐœ๋…์—์„œ์„ ๋งŒ๋‚ฌ์„๋–„ ๋‚ด ๋ฃจํ‹ด์€ ์ด๊ฒŒ ๋ญ”๋ฐ ..

article thumbnail
Spring Introduction 01 | ์Šคํ”„๋ง ์ž…๋ฌธ(1)
๐ŸŒฝ Spring 2022. 11. 27. 02:15

์˜ค๋Š˜๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ Spring ๋ฐœ๋‹์›€ .. ๐Ÿ”Ž ๋ญ”๊ฐ€ ๋จธ๋ฆฌ์— ๊ต‰์žฅํžˆ ๋งŽ์€ ๋‚ด์šฉ์ด ์Šค์ณ ์ง€๋‚˜๊ฐ”๋Š”๋ฐ ๋ฐ”์ง“๊ฐ€๋ž‘์ด๋ผ๋„ ๋ถ™์žก๊ณ ์ž ๊ธ€์„ ์จ๋ณธ๋‹ค.. ๐Ÿ“’ 1. ์Šคํ”„๋ง๊ณผ Spring Boot ์Šคํ”„๋ง๋ถ€ํŠธ์˜ ์ •์˜๋ฅผ ๋‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด ๊ตฌ์„ ์ƒ๋‹˜๊ป˜ ์งˆ๋ฌธ ๋“œ๋ ธ๋Š”๋ฐ ์—ญ์‹œ๋‚˜ ๊ธฐ๊น”๋‚œ ๋Œ€๋‹ต์„ ํ•ด์ฃผ์…จ๋‹ค ๐Ÿ“ ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์Šคํ”„๋ง์„ ๋” ์‰ฝ๊ฒŒ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ธ๋ฐ, Spring์˜ ์ดˆ์›์€ ๊ต‰์žฅํžˆ ๋„“๊ณ  ๊นŠ๊ณ  ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ณด๋‹ˆ ํ™˜๊ฒฝ์„ค์ •์ด ์—„์ฒญ ๋ณต์žกํ•œ๋ฐ ์ด๊ฑธ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ๊ฒŒ ๋ฐ”๋กœ Spring Boot๋ผ๊ณ  ํ•œ๋‹ค. ๐Ÿ“ ๊ทธ๋ฆฌ๊ณ  ์Šคํ”„๋ง์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ๋‚ด๋ ค๋ณด๋ฉด ์ž๋ฐ” ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํˆด์ด๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋”, ์ž๋ฐ” ๊ธฐ๋ฐ˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์ข…ํ•ฉ์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ธ์…ˆ โœจ ..