[Spring] 4. DI ( Dependency injection) ์˜์กด์„ฑ ์ฃผ์ž…

Spring DI / IoC java์˜ Class์ƒ์†, Interface๋ฅผ ์ด์šฉํ•œ ์ถ”์ƒํ™”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฐœ๋ฐœ๋ฐฉ๋ฒ•์œผ๋กœ Spring์€ DI/IoC๋ฅผ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. - Ioc (Invension of Control) ์ œ์–ด์˜ ์—ญ์ „ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ์–ดํ•˜๋Š” ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ ๋ฏธ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ๋†“๊ณ  ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ - DI (Dependency Injection) ์˜์กด์„ฑ ์ฃผ์ž… ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋งŒ๋“ค์–ด๋‘” ๊ฐ์ข… ํด๋ž˜์Šค(bean)๋“ค์€ ์„œ๋กœ ์˜์กด์ ์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ์™ธ๋ถ€์—์„œ ๋”ฐ๋กœ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ• DI๋Š” IoCํŒจํ„ด์˜ ๊ตฌํ˜„๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ DI์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์ด ์™„์ „ํžˆ ๋ณ€๊ฒฝ๋œ๋‹ค. ์Šคํ”„๋ง์€ DI๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋งŽ์€ ํ”„๋ ˆ์ž„ ์›Œํฌ ๋ชจ๋“ˆ๋“ค์ด ๋งŒ๋“ค์–ด์ง„๋‹ค. Spring์€ DI Framework ํ˜น..

(๊ตฌ)Spring 2019. 5. 31. 16:30
[Spring] 3. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉํ•˜๊ธฐ

์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ javaํŒŒ์ผ์„ ์ด์šฉํ•œ ํ”„๋กœ์ ํŠธ ์‹คํ–‰ ํŒจํ‚ค์ง€์™€ ํด๋ž˜์Šค ์ƒ์„ฑ ๊ธฐ์กด๋ฐฉ์‹ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ์Šคํ”„๋ง ๋ฐฉ์‹ ์Šคํ”„๋ง ์„ค์ •ํŒŒ์ผ(xml)์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด๋‘๊ณ  ์Šคํ”„๋ง ์„ค์ •ํŒŒ์ผ์„ ํ˜ธ์ถœํ•ด์„œ ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์Šคํ”„๋ง ๋ฐฉ์‹์˜ '์˜์กด'์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Main์—์„œ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ(XML)์„ ์ด์šฉํ•œ๋‹ค. ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ JavaํŒŒ์ผ์—์„œ ์ด์šฉํ•œ new ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. bean์€ xmlns ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ์‹๋ณ„ํ•˜๊ธฐ์œ„ํ•œ ๊ฐ’ xsi์€ xml์˜ ์„ค์ •์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ฒ ๋‹คํ•˜๋Š” ์ •๋ณด๋ฅผ ๊ฐ€๋ฆฌ์ผœ์ฃผ๋Š” ์ฃผ์†Œ ์Šคํ‚ค๋งˆ๋กœ์บ์ด์…˜์€,, bean์€ ๊ฐ์ฒด๋ฅผ ๋œปํ•˜๊ณ  id๋Š” ํด๋ž˜์Šค ์ด๋ฆ„, class๋Š” ํด๋ž˜์Šค์˜ ๊ฒฝ๋กœ๋ฅผ ์ ์–ด์ค€๋‹ค. xml์— ์ž‘์„ฑํ›„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ• GenericXmlApp..

(๊ตฌ)Spring 2019. 5. 30. 17:30
[Spring] 2. ๋ฉ”์ด๋ธ( Maven )

Maven ์ž๋ฐ” ํ”„๋กœ์ ํŠธ์˜ ๋นŒ๋“œ(bulid)๋ฅผ ์ž๋™ํ™”ํ•ด์ฃผ๋Š” ๋นŒ๋“œ ํˆด(bulid tool)๋กœ ํ”„๋กœ์ ํŠธ์˜ ์ „์ฒด์ ์ธ ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํŠน์ • ๋ฌธ์„œ( pom.xml )์— ์ •์˜ํ•ด ๋†“์œผ๋ฉด ๋„คํŠธ๋ญํฌ๋ฅผ ํ†ตํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ž๋™์œผ๋กœ ๋‹ค์šด๋ฐ›์•„ ์ค€๋‹ค. 1) Maven ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ Group Id ํ”„๋กœ์ ํŠธ์—์„œ ์ข…ํ•ฉ์ ์œผ๋กœ ๋งž์ถฐ์„œ ์‚ฌ์šฉํ•  ์ด๋ฆ„( ํŒจํ‚ค์ง€ ๊ฐ™์€ ๋Š๋‚Œ ) Artifact Id ํ”„๋กœ์ ํŠธ ์‹ค์ œ ์ง€์ •ํ•˜๊ฒŒ ๋  ์ด๋ฆ„ 2) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹ค์šด๋กœ๋“œ pom(Project Object Model).xml ํ”„๋กœ์ ํŠธ ๋‚ด์˜ ๋นŒ๋“œ ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด๋ฐ›๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋ฉ”์ด๋ธ ์„ค์ •ํŒŒ์ผ๋กœ ๋ฉ”์ด๋ธ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๊ณ  ๋นŒ๋“œ๋ฅผ ์œ„ํ•œ ํ”Œ๋žซํผ์œผ๋กœ ๋ฉ”์ด๋ธ์„ ์ด์šฉํ•˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์ •์œผ๋กœ ๋ฐ”๋กœ ..

(๊ตฌ)Spring 2019. 5. 30. 17:04
[Spring] 1. ์Šคํ”„๋ง์˜ ๊ฐœ์š”

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ๋ชจ๋“ˆ ํ”„๋ ˆ์ž„ ์›Œํฌ - ๋ผˆ๋Œ€๋ฅผ ์ด๋ฃจ๋Š” ์ฝ”๋“œ๋“ค์˜ ๋ชจ์ž„ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ธฐ๋ณธ ๋ผˆ๋Œ€๋กœ ๋ฐฉํ–ฅ์„ฑ์„ ์ œ์‹œํ•˜๊ณ  ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ฃผ์š” ๊ธฐ๋Šฅ์œผ๋กœ DI, AOP, MVC, JDBC๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋ชจ๋“ˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ ์•ˆ์— ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์˜์กด์„ค์ • ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์— XMLํŒŒ์ผ ๋“ฑ์„ ์ด์šฉํ•ด ์ง์ ‘ ํ•˜๋ฉด ๋œ๋‹ค. ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์„œ web.xml์— ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ง€๊ธˆ๊นŒ์ง€๋Š” ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋ฉด ๋ฐ”๋กœ ๊ทธ ์ž๋ฆฌ์—์„œ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์Šคํ”„๋ง์€ ๊ธฐ๋Šฅ๋“ค์„ ๋ชจ๋‘ ๊ด€๋ฆฌํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ผ๋Š” ๋ฐ•์Šค์•ˆ์— ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“๊ณ  ๊บผ๋‚ด์“ฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. xmlํŒŒ์ผ์— ์ ์–ด์ฃผ๋ฉด ์ปจํ…Œ์ด๋„ˆ์— ๊ฐ์ฒด(Be..

(๊ตฌ)Spring 2019. 5. 23. 17:06