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

๐Ÿ’Š Java & Kotlin & Spring/- Spring37

[Spring-Core ๊ณต์‹ ๋ฌธ์„œ ๋ฒˆ์—ญ] The IoC Container(2)-Container Overview ํ•ด๋‹น ํฌ์ŠคํŒ…์€ Spring์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ฒˆ์—ญํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ•™์Šตํ•˜์‹ค ๋•Œ ์ฐธ๊ณ ํ•˜๋Š” ์šฉ๋„๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ธ€์˜ ์ถœ์ฒ˜๋Š” Spring์ด๋ฉฐ ๊ณต์‹ ๋ฌธ์„œ์™€ ๋‹ค๋ฅธ ์˜๋ฏธ๋กœํ•ด์„ ๋˜์–ด ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์–‘ํ•ด๋ฐ”๋ž๋‹ˆ๋‹ค. Container Overview org.springframework.context.ApplicationContext ์ธํ„ฐํŽ˜์ด์Šค๋Š” IoC์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋Œ€ํ‘œํ•˜๊ณ  ์ธ์Šคํ„ด์Šคํ™”, ์„ค์ •, Bean์˜ assembling์— ๋Œ€ํ•œ ์ฑ…์ž„์ด ์žˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ์„ค์ • ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์œผ๋ฏ€๋กœ์จ ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์ธ์Šคํ„ด์Šคํ™” ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์„ค์ •๋˜๊ณ  ์กฐ๋ฆฝ๋˜๋Š”์ง€ ์ •๋ณด๋ฅผ ํš๋“ํ•œ๋‹ค. ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์˜ ์„ค์ •์€ XML, ์–ด๋…ธํ…Œ์ด์…˜, Java Code๋กœ ๋Œ€ํ‘œํš๋‹ค. ์ด๊ฒƒ์€ ๋‹น์‹ ์—๊ฒŒ ๋‹น์‹ ์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์ด.. 2020. 9. 1.
[Spring-Core ๊ณต์‹ ๋ฌธ์„œ ๋ฒˆ์—ญ] The IoC Container(1)-Introduction to the Spring IoC Container and Beans ํ•ด๋‹น ํฌ์ŠคํŒ…์€ Spring์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ฒˆ์—ญํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ•™์Šตํ•˜์‹ค ๋•Œ ์ฐธ๊ณ ํ•˜๋Š” ์šฉ๋„๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ธ€์˜ ์ถœ์ฒ˜๋Š” Spring์ด๋ฉฐ ๊ณต์‹ ๋ฌธ์„œ์™€ ๋‹ค๋ฅธ ์˜๋ฏธ๋กœํ•ด์„ ๋˜์–ด ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์–‘ํ•ด๋ฐ”๋ž๋‹ˆ๋‹ค. IOC Container IOC ์ปจํ…Œ์ด๋„ˆ์™€ Bean์— ๋Œ€ํ•œ ์†Œ๊ฐœ ์ด๋ฒˆ์—๋Š” ์ œ์–ด์˜ ์—ญ์ „์— ๋Œ€ํ•œ Spring ํ”„๋ ˆ์ž„์›Œํฌ ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค. IOC๋Š” DI(Dependency Injection)์œผ๋กœ๋„ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ๋‹ค. ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ์ž, ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์ธ์ˆ˜ ๋˜๋Š” ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์—์„œ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜ ๋œ ํ›„ ๊ฐœ์ฒด ์ธ์Šคํ„ด์Šค์— ์„ค์ •๋œ ์†์„ฑ์„ ํ†ตํ•ด์„œ๋งŒ ๊ฐœ์ฒด๊ฐ€ ์ข…์†์„ฑ (์ฆ‰, ์ž‘์—…ํ•˜๋Š” ๋‹ค๋ฅธ ๊ฐœ์ฒด)์„ ์ •์˜ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” Bean์„ ์ƒ์„ฑํ•  ๋•Œ ์˜์กด์„ฑ๋“ค์„ ์ฃผ์ž…ํ•œ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ๊ธฐ๋ณธ.. 2020. 9. 1.
[Springboot] IntelliJ๋ฅผ ์ด์šฉํ•˜์—ฌ Springboot + Mysql + Jpa + Lombok ํ”„๋กœ์ ํŠธ Setup ํ›„ Rest API ์„œ๋ฒ„ CRUD ํ…Œ์ŠคํŠธ (MacOS) ๋ณธ ๊ธ€์€ Springboot์™€ Mysql + Jpa + Lombok ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ธ”๋กœ๊ทธ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  Springboot + Jpa ๊ด€๋ จ ๊ธ€์€ ์ด ๊ธ€์— ์กด์žฌํ•˜๋Š” ๋‚ด์šฉ์„ ์ „์ œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์„œ Springboot Project ์ƒ์„ฑ Gradle ์˜์กด์„ฑ ์ถ”๊ฐ€ application.properties ์„ค์ • db table ์ƒ์„ฑ Lombok ์„ค์ • ์ฝ”๋“œ ๊ตฌํ˜„ (model, controller, repository ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ƒ์„ฑ) CRUD ํ…Œ์ŠคํŠธ ์ˆœ์„œ๋Š” IntelliJ IDE๊ฐ€ ๊น”๋ ค์žˆ๋‹ค๋Š” ์ „์ œ ํ•˜์— ์ง„ํ–‰๋œ๋‹ค. Springboot Project ์ƒ์„ฑ ์šฐ๋ฆฌ๋Š” Springboot ํ”„๋กœ์ ํŠธ๋ฅผ ์ด์šฉํ•ด์„œ JPA๋ฅผ ํ…Œ์ŠคํŠธํ•  ๊ฒƒ์ด๋ฏ€๋กœ Springboot ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ง์ ‘ S.. 2020. 8. 27.
[Spring & Springboot] Generic์„ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“  Request, Response์— Header์™€ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž. ์ด ์‹œ๋ฆฌ์ฆˆ๋Š” Spring์—์„œ Generic์„ ์ด์šฉํ•˜์—ฌ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž.์™€ ์ด์–ด์ง€๋Š” ๊ธ€ ์ž…๋‹ˆ๋‹ค. Generic(์ œ๋„ˆ๋ฆญ)์„ ํ•ต์‹ฌ๋งŒ ์ดํ•ดํ•ด๋ณด์ž. Spring์—์„œ Generic์„ ์ด์šฉํ•˜์—ฌ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž. ์ด ๊ธ€์€ ์‹ค์ „์— ๊ด€ํ•œ ๊ธ€์ด๊ณ  ์ œ๋„ˆ๋ฆญ์— ๋Œ€ํ•œ ์ด๋ก ์ด ๋ถ€์กฑํ•˜์‹  ๋ถ„๋“ค์€ 1๋ฒˆ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ถฉ๋ถ„ํžˆ ์ˆ™์ง€ํ•˜๊ณ  ์˜ค์‹œ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ œ๋„ค๋ฆญ์„ ์‹ค์ „์—์„œ ์‚ฌ์šฉํ•ด๋ณด์ž. ์ง€๋‚œ ์‹œ๊ฐ„์— ๋ฐฐ์šด ์ œ๋„ค๋ฆญ์— ์ด์–ด์„œ ์ด์ œ ์‹ค์ „์—์„œ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์œ„ํ•ด ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ํ•ด๋ณด์ž. Jpa + Springboot + Mysql ์—ฐ๋™์— ๋Œ€ํ•ด์„œ๋Š” ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  Http ํ†ต์‹ ์— Header๋ผ๋Š” ๊ณตํ†ต ๋ถ€๋ถ„์ด ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค. ์›๋ž˜๋ผ๋ฉด request, response ์— setHeader๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํ—ค๋”๋ฅผ ๊ด€.. 2020. 8. 27.