๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ’Š Java & Kotlin & Spring/- spring framework +39

[Spring Framework] Spring-Core(BeanFactory ์ธํ„ฐํŽ˜์ด์Šค) ๋ถ„์„ ๋ฐ ๊ตฌํ˜„ ์ด ๊ธ€์€ Spring์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๊ธ€์ด๋ฏ€๋กœ ๊ณต์‹ ๋ฌธ์„œ์— ๊ฐœ์ธ์˜ ์ƒ๊ฐ๊ณผ ์ถ”์ธก์ด ํฌํ•จ๋œ ๊ธ€์ด๋‹ˆ ์ด ์  ์ฐธ๊ณ ํ•˜๊ณ  ์ฝ์–ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ Spring-Framework-Core์˜ BeanFactory์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. Interface BeanFactory Spring ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋Š” BeanFactory์ธํ„ฐํŽ˜์ด์Šค๋ฅผ Spring ์ปจํ…Œ์ด๋„ˆ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ Root ์ธํ„ฐํŽ˜์ด์Šค๋ผ๊ณ  ์ •์˜ํ•œ๋‹ค. ์ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ๊ฐ String ์ด๋ฆ„์œผ๋กœ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„๋˜๋Š” ์—ฌ๋Ÿฌ Bean ์ •์˜๋ฅผ ๋ณด์œ ํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ์— ์˜ํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๋นˆ ์ •์˜์— ๋”ฐ๋ผ ํŒฉํ† ๋ฆฌ๋Š” ํฌํ•จ ๋œ ๊ฐ์ฒด์˜ ๋…๋ฆฝ ์ธ์Šคํ„ด์Šค (Prototype ๋””์ž์ธ ํŒจํ„ด) ๋˜๋Š” ๋‹จ์ผ ๊ณต์œ  ์ธ์Šคํ„ด์Šค (์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฒ”์œ„์˜ ์‹ฑ๊ธ€ ํ†ค ์ธ Singl.. 2020. 9. 7.
[Spring Framework] AOP์— ๋Œ€ํ•œ ์šฉ์–ด๋“ค๊ณผ ๊ธฐ๋ณธ ์ปจ์…‰์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์˜ค๋Š˜์€ Spring์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ค‘ ํ•˜๋‚˜์ธ AOP (Aspect Oriented Programming)์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. AOP ์‚ฌ์ „์  ์˜๋ฏธ์ธ AOP๋Š” ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ฅผ ํ—ˆ์šฉํ•จ์œผ๋กœ ๋ชจ๋“ˆ์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค. ์ข…๋‹จ ๊ด€์‹ฌ์‚ฌ๋ž€? ํ•˜๋‚˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋กœ์ง์ด ์ข…๋‹จ์˜ ๊ฐœ๋…์œผ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์›๊ฐ€์ž…์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋กœ์ง๋“ค์ด ํšŒ์›๊ฐ€์ž…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ด€์‹ฌ์‚ฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋”ฐ. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ€์žฅ ์‹ซ์–ดํ•˜๋Š” ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ํ™•๋ฅ ์ด ๋†’์•„์ง„๋‹ค. ์šฐ๋ฆฌ๊ฐ€ DB Connection์— ๊ด€ํ•ด์„œ CRUD๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ชจ๋“  ๋ฉ”์„œ๋“œ์— Connection c์˜ ์ฝ”๋“œ๊ฐ€ ๊ณ„์† ์ค‘๋ณต๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค. ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋ž€? ํ•˜์ง€๋งŒ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋ž€ ์—ฌ๋Ÿฌ ๋น„์ฆˆ๋‹ˆ์Šค.. 2020. 9. 5.
[Spring Framework] DI Application์„ ๋งŒ๋“ค์–ด๋ณด์ž. ์ด๋ฒˆ ๊ธ€์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” SKplanet Tacademy - Spring Framework Basic ๋™์˜์ƒ ๊ฐ•์˜ ์ž๋ฃŒ์— ์žˆ๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ง€๋‚œ ์‹œ๊ฐ„ IoC ์ปจํ…Œ์ด๋„ˆ์™€ DI์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…๊ณผ ์šฉ์–ด๋“ค์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด์ œ ์˜ค๋Š˜์€ Ioc Container(DI Container)๋ฅผ ์–ด๋–ป๊ฒŒ Spring์—์„œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. POJO ํด๋ž˜์Šค ์ž‘์„ฑ ์„ค์ • ๋ฉ”ํƒ€์ •๋ณด XML ์ž‘์„ฑ DI ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค ์ž‘์„ฑ POJO ํด๋ž˜์Šค์˜ ๋‹ค์ด์–ด๊ทธ๋žจ ์šฐ๋ฆฌ๊ฐ€ ์˜ˆ์ œ๋กœ ๊ตฌ์„ฑํ•  POJOํด๋ž˜์Šค์˜ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. Hello.class Printer.interface StringPrinter.class ConsolePrinter.class beans.xml :: XML ์„ค์ •.. 2020. 9. 5.
[Spring Framework] Spring์˜ ํ•ต์‹ฌ IoC/DI์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์šฐ๋ฆฌ๋Š” ์ง€๋‚œ ์‹œ๊ฐ„ ๋ฌด์—‡์ด Framework์ด๋ฉฐ ์™œ Spring์ด์–ด์•ผ ํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. Framework์˜ ํŠน์„ฑ์ด IoC, ์ฆ‰ ์ œ์–ด์˜ ์—ญ์ „์ด๋ผ๊ณ  ํ•˜์˜€๋Š”๋ฐ ์˜ค๋Š˜์€ ๊ทธ ์ œ์–ด์˜ ์—ญ์ „์— ์˜๋ฏธ์™€ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ œ์–ด๋ฅผ ์—ญ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ DI์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. ๊ฒฐ๋ก ์„ ๋ฏธ๋ฆฌ ๋ง ํ•˜์ž๋ฉด Spring IoC Container๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์„ค์ •์„ ํ†ตํ•ด์„œ Bean์„ ๊ด€๋ฆฌํ•œ๋‹ค. ์ง€๊ธˆ ์ด ๋ง์„ ํ•˜๋‚˜๋„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด ์ •์ƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ์ง๋ฉดํ–ˆ์œผ๋‹ˆ ํ•˜๋‚˜ ํ•˜๋‚˜ Divide And Conquer ๋ฅผ ํ•ด๋ณด์ž ์šฐ๋ฆฌ๋Š” ์œ„์˜ ๋ฌธ์žฅ์„ ์ž˜๊ฒŒ ๋‚˜๋ˆ ๋ณผ ๊ฒƒ์ด๋‹ค. IoC Container Bean ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ด 3 ๊ฐ€์ง€๋งŒ ์•Œ๋ฉด ์œ„์˜ ๋ฌธ์žฅ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์กฐ๊ธˆ ๊ฐˆ ๊ฒƒ ๊ฐ™๋‹ค. IoC Container Fram.. 2020. 9. 4.
[Spring Framework] ์™œ Spring์ธ๊ฐ€? Spring์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์•Œ์•„๋ณด์ž ์ด๋ฒˆ ๊ธ€์€ GDG Spring Framework Study์—์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  Spring ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๊ณตํ†ต์ ์œผ๋กœ ์•Œ์•„์•ผํ•  Spring์˜ ์—ญ์‚ฌ์— ๋Œ€ํ•ด์„œ ์ž ์‹œ ์ด์•ผ๊ธฐํ•ด๋ณด๋ ค ํ•œ๋‹ค. Framework vs Library ์ผ๋‹จ Spring์„ ์‚ฌ์šฉํ•˜๊ธฐ์ „์— ๋ฌด์—‡์ด Library์ด๊ณ  ์™œ Framework์„ ์™œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ํƒ„์ƒํ–ˆ๋Š”์ง€๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹จ์ˆœ ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ๋“ค์˜ ์ง‘ํ•ฉ์„ ๋งํ•œ๋‹ค. Library ์šฐ๋ฆฌ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์‹œ์— ๊ธฐ์กด์— ๋งŒ๋“ค์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ์žฌํ™œ์šฉํ•จ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ์ž‘ํ•œ๋‹ค. Framework ์™œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํƒ„์ƒํ–ˆ๋Š”์ง€๋Š” ํ•œ ๋‹จ์–ด๋กœ ์ •๋ฆฌํ•˜์ž๋ฉด Choas State -> Reusable State ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ฒฐ๊ตญ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๋กœ ํ•˜๋‚˜์˜ ๋ผˆ๋Œ€๋ฅผ .. 2020. 9. 3.
[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.