[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
09 Java ๊ฐ์ฒด์™€ ํด๋ž˜์Šค

์ž๋ฐ”์—์„œ ํด๋ž˜์Šค(๋ถ•์–ด๋นตํ‹€)๋Š” ๊ฐ์ฒด(=์ธ์Šคํ„ด์Šค)(๋ถ•์–ด๋นต)๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ‹€์ด๋‹ค. ํด๋ž˜์Šค(Class) = ๋ฐ์ดํ„ฐ(Data) + ๋ฉ”์„œ๋“œ(Method) ํด๋ž˜์Šค์˜ ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ์ด๊ณ , ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์˜ ๊ธฐ๋Šฅ์ด๋‹ค. ๊ฐ์ฒด ์ƒ์„ฑ ํด๋ž˜์Šค๋ช… ๋ณ€์ˆ˜๋ช… = new ํด๋ž˜์Šค๋ช…( ); //ํŽœ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ‹€์„ ์ •์˜ํ•œ๋‹ค -> ํŽœ ํด๋ž˜์Šค //์„ค๊ณ„์šฉ ํด๋ž˜์Šค(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํด๋ž˜์Šค)๋Š” ๋ฉ”์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. public class Pen { //ํด๋ž˜์Šค์˜ ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์„ ๋ฉค๋ฒ„๋ณ€์ˆ˜(ํ•„๋“œ)๋ผ๊ณ  ํ•œ๋‹ค. int price;//ํŽœ์˜ ๊ฐ€๊ฒฉ String color;//ํŽœ์˜ ์ƒ‰์ƒ //ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์„ ๋ฉค๋ฒ„ํ•จ์ˆ˜(๋ฉ”์„œ๋“œ)๋ผ๊ณ  ํ•œ๋‹ค. void write() { //๊ธ€์“ฐ๊ธฐ ๊ธฐ๋Šฅ System.out.println(color + "..

(๊ตฌ)Java 2019. 5. 16. 17:00
08 Java ๋ฉ”์„œ๋“œ(method)

๋ฉ”์„œ๋“œ ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ ๋ธ”๋ก์„ ๋ฌถ์–ด ์ด๋ฆ„์„ ๋ถ™์—ฌ๋†“์€ ๊ฒƒ์ด๋‹ค. ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ค„์—ฌ์ฃผ๊ณ , ์ข€ ๋” ๊ตฌ์กฐํ™”์‹œ์ผœ ์šฐ๋ฆฌ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์‰ฝ๊ฒŒ ํ•ด์ค€๋‹ค. ๋ฉ”์„œ๋“œ ์„ ์–ธ ๋ฐฉ๋ฒ• (๋งค๊ฐœ๋ณ€์ˆ˜) { ๊ธฐ๋Šฅ์ƒ์„ธ ; } - ๋ฐ˜ํ™˜ ์œ ํ˜• (return type) ๋ฐ˜ํ™˜ ์œ ํ˜•์€ ๋ฉ”์„œ๋“œ ์‹คํ–‰ ํ›„ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ์— ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋งํ•œ๋‹ค. ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜ํ™˜๊ฐ’์ด ์žˆ์„ ๊ฒฝ์šฐ๋„ ์žˆ๊ณ  ์—†์„ ๊ฒฝ์šฐ๋„ ์žˆ๋Š”๋ฐ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” void๋ฅผ ์“ด๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์ด ์žˆ๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ํ•ด๋‹น ๋ฐ˜ํ™˜์œ ํ˜•์— ๋งž๋Š” ๋ณ€์ˆ˜์— ๋ฐ˜ํ™˜๊ฐ’์„ ์ €์žฅํ•ด์•ผํ•œ๋‹ค. ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ๋Š” return ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. - ๋งค๊ฐœ ๋ณ€์ˆ˜ (parameter) ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ๋งค๊ฐœ ๋ณ€์ˆ˜..

(๊ตฌ)Java 2019. 5. 16. 16:16
07 Java ์ œ์–ด๋ฌธ - ํƒˆ์ถœ๋ฌธ

ํƒˆ์ถœ๋ฌธ - ํƒˆ์ถœ๋ฌธ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ง€์ •๋œ ๊ณณ์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ๋ฌธ์žฅ์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ ๋˜๋Š” ๋ธ”๋ก๊ตฌ์กฐ์—์„œ ๋น ์ ธ ๋‚˜์˜ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. - ํƒˆ์ถœ๋ฌธ์˜ ํ‚ค์›Œ๋“œ๋Š” break, continue, return๋ฌธ์ด ์žˆ๋‹ค. - goto๋Š” ์ž๋ฐ”์˜ ํ‚ค์›Œ๋“œ์—๋Š” ํฌํ•จ๋˜์–ด ์žˆ์œผ๋‚˜ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. 1. break - break๋Š” ๋ฐ˜๋ณต๋ฌธ ๋‚ด์˜ ์–ด๋–ค ๊ณณ์ด๋“  ์œ„์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฒ˜๋ฆฌ ๋„์ค‘์— break๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ๊ณง๋ฐ”๋กœ ๋น ์ ธ๋‚˜์˜จ๋‹ค. - ์ค‘์ฒฉ ๋ฐ˜๋ณต๋ฌธ์˜ ๊ฒฝ์šฐ์— ๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ์—์„œ break๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๊ทธ break๋ฌธ์ด ์†ํ•œ ๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ๋งŒ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. - ์ค‘์ฒฉ ๋ฐ˜๋ณต๋ฌธ์—์„œ ๋ฐ”๊นฅ์ชฝ ๋ฐ˜๋ณต๋ฌธ๊นŒ์ง€ ์ข…๋ฃŒ์‹œํ‚ค๋ ค๋ฉด ๋ฐ”๊นฅ์ชฝ ๋ฐ˜๋ณต๋ฌธ์— ์ด๋ฆ„(label) ์„ ๋ถ™์ด๊ณ , "break ์ด๋ฆ„;"์„ ์‚ฌ์šฉ 1 2 3 4 5 6 7 8 9 10 11 12 13 ..

(๊ตฌ)Java 2019. 4. 29. 16:00