Skip to content

SoptSpringStudy/hyesun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

11 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

[ 0518 ์Šคํ”„๋ง ์Šคํ„ฐ๋”” ์ž๋ฃŒ ]

  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ฃผ์š”๊ธฐ๋Šฅ์œผ๋กœ DI, AOP, MVC, JDBC ๋“ฑ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“ˆ
  1. Spring-core : di์™€ ioc๋ฅผ ์ œ๊ณต
  2. Spring-aop : aop ๊ตฌํ˜„ ๊ธฐ๋Šฅ ์ œ๊ณต
  3. Spring-jdbc : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต
  4. Spring-tx : ํŠธ๋žœ์žญ์…˜ ๊ด€๋ จ ๊ธฐ๋Šฅ ์ œ๊ณต
  5. Spring webmvc : model-view-controller ์Šคํ”„๋ง mvc๊ตฌํ˜„ ๊ธฐ๋Šฅ ์ œ๊ณต
  • ์ด๋Ÿฌํ•œ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์— xml ํŒŒ์ผ๋“ฑ์„ ์ด์šฉํ•ด์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ•˜๋ฉด ๋œ๋‹ค.
  • ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ(IoC) : ์Šคํ”„๋ง์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์กฐ๋ฆฝํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๋นˆ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • Maven์„ ์ด์šฉํ•ด์„œ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• ( maven: ๋นŒ๋“œํ•˜๋Š” ํˆด )
  • Pom.xml ์ž‘์„ฑ => ํ•„์š”ํ•œ ์Šคํ”„๋ง ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ํŒŒ์ผ๋“ค, ๋ฉ”์ด๋ธ ์„ค์ • ํŒŒ์ผ๋กœ ๋ฉ”์ด๋ธ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๊ณ , ๋นŒ๋“œ๋ฅผ ์œ„ํ•œ ํ”Œ๋žซํผ
  • ํด๋” ๊ตฌ์กฐ

src/main/java -> ์‹ค์ œ๋กœ java๋ฅผ ์‚ฌ์šฉํ•ด ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ํ•ด๋‚˜๊ฐ€๋Š” ๊ณณ

src/main/resources -> java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํŒŒ์ผ๋“ค(์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ)

  • applicationContext.xml ํŒŒ์ผ์€ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ์ด๋‹ค.
  • DI(Dependency injection)

-๋ฐฐํ„ฐ๋ฆฌ ์ผ์ฒดํ˜• : ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ๋–จ์–ด์ง€๋ฉด ์žฅ๋‚œ๊ฐ์„ ์ƒˆ๋กœ ๊ตฌ์ž…ํ•ด์•ผ ํ•œ๋‹ค.

-๋ฐฐํ„ฐ๋ฆฌ ๋ถ„๋ฆฌํ˜• : ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ๋–จ์–ด์ง€๋ฉด ๋ฐฐํ„ฐ๋ฆฌ๋งŒ ๊ต์ฒดํ•˜๋ฉด ๋œ๋‹ค.

=> ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ์˜์กด ์ฃผ์ž…์„ ํ•œ๋‹ค.

์ƒ์„ฑ์ž์—์„œ ์˜์กด ์ฃผ์ž…์„ ํ•ด์ฃผ๊ณ , set ํ•จ์ˆ˜์—์„œ๋„ ์˜์กด ์ฃผ์ž…์„ ํ•ด์ค€๋‹ค.

  • ์Šคํ”„๋ง DI ์„ค์ • ๋ฐฉ๋ฒ• ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ๋นˆ(Bean) ๊ฐ์ฒด ํ˜ธ์ถœ ๊ณผ์ •

<ํ”„๋กœ์ ํŠธ ์„ค๋ช…>

-ํ•™์ƒ ๊ด€๋ฆฌ ํ”„๋กœ์ ํŠธ ํ•™์ƒ ๋ฒˆํ˜ธ, id, pw, ๋‚˜์ด, ์„ฑ๋ณ„, ์ „๊ณต

ํ•™์ƒ ์ •๋ณด select, update, delete ๊ธฐ๋Šฅ

*DI ํ˜•์„ฑ์€ ์–ด๋–ป๊ฒŒ?

Service์•ˆ์— DAO๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

์˜ˆ์‹œ๋กœ) Assembler ํŒŒ์ผ ์•ˆ์— dao๋ฅผ ์ƒ์„ฑํ•ด์„œ service์— ์ฃผ์ž…ํ•ด์ฃผ๊ณ  ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์‹ค์ œ ์Šคํ”„๋ง์—์„œ๋Š” Spring ์„ค์ • ํŒŒ์ผ ์•ˆ์— Constructor-arg ํƒœ๊ทธ ์•ˆ์— dao๋ฅผ ์ฃผ์ž…ํ•ด์ฃผ๊ณ  ์žˆ๋‹ค. => GeneralXMLApplicationContext์„ ํ†ตํ•ด getBean์„ ํ•ด์ค€๋‹ค.

  • ๋‹ค์–‘ํ•œ ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…
  1. ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•œ ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…
  2. Setter ๋ฅผ ์ด์šฉํ•œ ์˜์กด ๊ฐ์ฒด ์ฃผ์ž… Property ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•œ๋‹ค. Name, value ์†์„ฑ์„ ๋„ฃ์–ด์ค€๋‹ค.
  3. List ํƒ€์ž… ์˜์กด ๊ฐ์ฒด ์ฃผ์ž… Property ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜๊ณ , list ํƒœ๊ทธ ์•ˆ์— value ํƒœ๊ทธ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.
  4. Mapํƒ€์ž… ๊ฐ์ฒด ์ฃผ์ž… Map ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•œ๋‹ค.

[ 0525 ์Šคํ”„๋ง ์Šคํ„ฐ๋”” ]

  • ์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ ๋ถ„๋ฆฌ applicationContext.xml -> app1.xml, app2.xml, app3.xml ๋ถ„๋ฆฌ

App1.xml -> dao, service ์„ค์ •

App2.xml -> bean ํด๋ž˜์Šค ์„ค์ •

App3.xml -> bean ํด๋ž˜์Šค ์„ค์ •

  • ๋ถ„๋ฆฌ๋œ ํŒŒ์ผ -> ๋ฐฐ์—ด๋กœ classpath ์„ค์ • , import๋กœ ๋„ฃ์–ด์ฃผ๊ธฐ
  • ๋นˆ(Bean)์˜ ๋ฒ”์œ„

-์‹ฑ๊ธ€ํ†ค(singleton) : ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ƒ์„ฑ๋œ ๋นˆ ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ ๋™์ผํ•œ ํƒ€์ž…์— ๋Œ€ํ•ด์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•œ ๊ฐœ๋งŒ ์ƒ์„ฑ์ด ๋˜๋ฉฐ, getBean() ๋ฉ”์†Œ๋“œ๋กœ ํ˜ธ์ถœ๋  ๋•Œ ๋™์ผํ•œ ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

-ํ”„๋กœํ†  ํƒ€์ž… : ์‹ฑ๊ธ€ํ†ค ๋ฒ”์œ„์™€ ๋ฐ˜๋Œ€์˜ ๊ฐœ๋…๋„ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ํ”„๋กœํ†  ํƒ€์ž… ๋ฒ”์œ„๋ผ๊ณ  ํ•œ๋‹ค. ํ”„๋กœํ† ํƒ€์ž…์˜ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๋Š” ๋ณ„๋„๋กœ ์„ค์ •์„ ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, ์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ์—์„œ ๋นˆ ๊ฐ์ฒด๋ฅผ ์ •์˜ ํ•  ๋•Œ scope์†์„ฑ์„ ๋ช…์‹œํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

Scope = โ€œprototypeโ€ ์„ ์„ค์ •ํ•˜๋ฉด ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๋˜‘๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๋‘๋ฒˆ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค.

  • ์˜์กด ๊ฐ์ฒด ์ž๋™ ์ฃผ์ž…
  • ์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ์—์„œ ์˜์กด ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•  ๋•Œ ๋˜๋Š” ํƒœ๊ทธ๋กœ ์˜์กด ๋Œ€์ƒ ๊ฐ์ฒด๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์•„๋„ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž๋™์œผ๋กœ ํ•„์š”ํ•œ ์˜์กด ๋Œ€์ƒ ๊ฐ์ฒด๋ฅผ ์ฐพ์•„์„œ ์˜์กด ๋Œ€์ƒ ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•œ ๊ฐ์ฒด์— ์ฃผ์ž…ํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์€ @Autowired์™€ @Resource ์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•ด์„œ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. @Autowired ์ฃผ์ž…ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฐ์ฒด์˜ ํƒ€์ž…์ด ์ผ์น˜ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•œ๋‹ค. Ex) ๋‹จ์–ด๋ฅผ ๊ฒ€์ƒ‰์„ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ context:annotation-config/ => ์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์ถ”๊ฐ€

  2. @Resource ์ฃผ์ž…ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฐ์ฒด์˜ ์ด๋ฆ„์ด ์ผ์น˜ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•œ๋‹ค. But, ์ƒ์„ฑ์ž์—์„œ๋Š” ์“ธ ์ˆ˜ ์—†์Œ.

  • ์˜์กด ๊ฐ์ฒด ์„ ํƒ ๋™์ผํ•œ ๊ฐ์ฒด๊ฐ€ 2๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ์ž๋™ ์ฃผ์ž… ๋Œ€์ƒ ๊ฐ์ฒด๋ฅผ ํŒ๋‹จํ•˜์ง€ ๋ชปํ•ด์„œ Exception์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. => ํ•ด๊ฒฐ๋ฐฉ๋ฒ• : @Qualifier ๋ฅผ ์ด์šฉ! Ex)
๋™์ผํ•œ 3๊ฐœ์˜ ๋นˆ ๊ฐ์ฒด ๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐ
  • ์˜์กด๊ฐ์ฒด ์ž๋™ ์ฃผ์ž… ์ฒดํฌ @Autowired(required= false) //๊ฑฐ์˜ ์“ฐ์ง€ ์•Š์Œ

  • @Inject ์–ด๋…ธํ…Œ์ด์…˜

@autowired ์™€ ๊ฑฐ์˜ ๋น„์Šทํ•˜๊ฒŒ ์ด์šฉํ•ด์„œ ์˜์กด ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ฃผ์ž…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฐจ์ด์ : required ์†์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • Inject ์‚ฌ์šฉํ•  ์‹œ ๋™์ผํ•œ ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ

@Inject @Named(value=โ€โ€) ์ด๋ ‡๊ฒŒ ๋งŽ์ด ์“ฐ์ธ๋‹ค.

=> Autowired ๊ฐ€ ๋” ๋งŽ์ด ์“ฐ์ธ๋‹ค.

[0601 ์Šคํ”„๋ง ์Šคํ„ฐ๋””]

  • ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ๋ช…์ฃผ๊ธฐ
  1. GenericXmlApplicationContext๋ฅผ ์ด์šฉํ•œ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ(์ƒ์„ฑ ์‹œ์ )
  2. getBean()์„ ์ด์šฉํ•œ ๋นˆ ๊ฐ์ฒด ์ด์šฉ
  3. close()์„ ์ด์šฉํ•œ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ (์†Œ๋ฉธ ์‹œ์ )
  • ๋นˆ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ๊ฐ™์ด ํ•œ๋‹ค.
  • ๋นˆ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ์ด ๋˜๊ณ  ์†Œ๋ฉธ์ด ๋˜๋Š” ์‹œ์ ์— ํŠน์ •ํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. Interface๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ• InitializingBean, DisposableBean interface ์ฐธ์กฐ
  2. Init-method, destroyMethod
    Bean ์†์„ฑ์— ์ž‘์„ฑ
  • ์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•œ ์Šคํ”„๋ง ์„ค์ •
  • Xml ํŒŒ์ผ์„ java ํŒŒ์ผ๋กœ ๋ณ€๊ฒฝ ** @configuration ์–ด๋…ธํ…Œ์ด์…˜ ์ด์šฉ(์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋กœ์จ ๋ช…์นญ์„ ํ•ด์ค„ ๋•Œ ์“ฐ์ž„), @Bean ์–ด๋…ธํ…Œ์ด์…˜ ์ด์šฉ(bean ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์“ฐ์ž„) GenericXmlApplicationContext ๋Œ€์‹  AnnotationConfigApplicationContext ํด๋ž˜์Šค๋ฅผ ์ด์šฉ
  • Java ํŒŒ์ผ ๋ถ„๋ฆฌ
  • ์™œ? ํ•œ ํŒŒ์ผ์— ๋ชจ๋‘ ์ž‘์„ฑ ์‹œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํž˜๋“ค๋‹ค
    Dao, Service, Database, Util ๋“ฑ์œผ๋กœ ๋ณดํ†ต ๋ถ„๋ฆฌ ** ํŒŒ์ผ ๋ถ„๋ฆฌ ์‹œ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ์ฐธ์กฐํ•˜๊ณ  ์‹ถ์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์„ ์‹œ -> @Autowired ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ์ฐธ์กฐ
  • ๋ถ„๋ฆฌ๋œ ํŒŒ์ผ์„ ์–ด๋–ป๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ๊นŒ?
  1. ๋ฐฐ์—ด ํƒ€์ž…์œผ๋กœ ๋‚˜์—ดํ•ด์ค€๋‹ค.
  2. @Import ์–ด๋…ธํ…Œ์ด์…˜
    1๋ฒˆ ํด๋ž˜์Šค์—์„œ @Import({2๋ฒˆ ํด๋ž˜์Šค, 3๋ฒˆํด๋ž˜์Šค}) ๋ฅผ ์จ์ค€๋‹ค.

About

spring study

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages