mc.thd 2024. 1. 1. 21:58

SpringFramework๋ž€?

  • Spring Framework ๋Š” ์ž๋ฐ”๋กœ Enterprise Application ์„ ๋งŒ๋“ค ๋•Œ ํฌ๊ด„์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Programming ๋ฐ Configuration Model ์„ ์ œ๊ณตํ•ด ์ฃผ๋Š” Framework ๋กœ Application ์ˆ˜์ค€์˜ ์ธํ”„๋ผ ์ŠคํŠธ๋Ÿญ์ณ๋ฅผ ์ œ๊ณต.
  • ์ฆ‰ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณต์žกํ•˜๊ณ  ์‹ค์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด Low Level ( ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด setting )์— ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  Business Logic๊ฐœ๋ฐœ์— ์ „๋…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค

Spring Container

  • ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ์Šคํ”„๋ง์—์„œ ์ž๋ฐ” ๊ฐ์ฒด๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„์„ ๋งํ•จ.
  • ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์Šคํ”„๋ง์—์„  ๋นˆ(Bean)์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” ์ด ๋นˆ(Bean)์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ๋ฉธ๊นŒ์ง€๋ฅผ ๊ฐœ๋ฐœ์ž ๋Œ€์‹  ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๊ณณ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ

Spring ์‚ผ๊ฐํ˜•

Enterprise Application ๊ฐœ๋ฐœ ์‹œ ๋ณต์žกํ•จ์„ ํ•ด๊ฒฐํ•˜๋Š” Spring์˜ ํ•ต์‹ฌ.

Enterprise Application์ด๋ž€?
๊ฐœ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹Œ ์กฐ์ง์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋„๋ก ์„ค๊ณ„๋œ ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ์†”๋ฃจ์…˜ (chatgpt)

Java SE(standard edition) : ๋กœ์ปฌ์—์„œ ๋Œ์•„๊ฐ€๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ
Java EE : ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ (๊ทœ๋ชจ๊ฐ€ ์ปค์ง„๊ฑฐ๋ผ๊ณ  ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ๋จ)

1. POJO (Plain Old Java Object)

  • ํŠน์ • ํ™˜๊ฒฝ์ด๋‚˜ ๊ธฐ์ˆ ์— ์ข…์†์ ์ด์ง€ ์•Š์€ ๊ฐ์ฒด์ง€ํ–ฅ ์›๋ฆฌ์— ์ถฉ์‹คํ•œ ์ž๋ฐ”๊ฐ์ฒด
  • ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์šฉ์ดํ•˜๋ฉฐ, ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

2. PSA(Portable Service Abstraction)

  • ํ™˜๊ฒฝ๊ณผ ์„ธ๋ถ€๊ธฐ์ˆ ์˜ ๋ณ€๊ฒฝ๊ณผ ๊ด€๊ณ„์—†์ด ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๊ธฐ์ˆ ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์„ค๊ณ„ ์›์น™
  • ํŠธ๋žœ์žญ์…˜ ์ถ”์ƒํ™”, OXM์ถ”์ƒํ™”, ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค์˜ Exception ๋ณ€ํ™˜๊ธฐ๋Šฅ..๋“ฑ ๊ธฐ์ˆ ์ ์ธ ๋ณต์žกํ•จ์€ ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•ด Low Level์˜ ๊ธฐ์ˆ  ๊ตฌํ˜„ ๋ถ€๋ถ„๊ณผ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ถ„๋ฆฌ.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ด€๊ณ„์—†์ด ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฐฉ์‹.

3. IoC/DI (Dependency Injection)

  • DI๋Š” ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋‘๊ณ  ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด๊ด€๊ณ„๋Š” ์™ธ๋ถ€์—์„œ ๋‹ค์ด๋‚˜๋ฏนํ•˜๊ฒŒ ์„ค์ •.
  • ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋งŒ๋“œ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ๋‹ค ๋งŒ๋“ค์–ด ๋†“๊ณ  DIํ•˜๋Š” ๊ฒƒ

4. AOP(Aspect Oriented Programming)

  • ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ชจ๋“ˆ์„ฑ์„ ํ–ฅ์ƒ
  • ๊ณตํ†ต ๋ชจ๋“ˆ์„ ์—ฌ๋Ÿฌ ์ฝ”๋“œ์— ์‰ฝ๊ฒŒ ์ ์šฉ๊ฐ€๋Šฅ.

SpringFramework์˜ ํŠน์ง•

  • ๊ฒฝ๋Ÿ‰์ปจํ…Œ์ด๋„ˆ
    • ์Šคํ”„๋ง์€ ์ž๋ฐ”๊ฐ์ฒด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.
    • ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ์ž๋ฐ” ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ๊ณผ ๊ฐ™์€ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ด€๋ฆฌ
    • ์–ธ์ œ๋“  ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • DI(Dependency Injection) 
    • ์Šคํ”„๋ง์€ ์„ค์ •ํŒŒ์ผ์ด๋‚˜, ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด์„œ ๊ฐ์ฒด๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
    • ๊ธฐ์กด์—๋Š” Singleton ํŒจํ„ด์œผ๋กœ ํ•„์š”ํ•  ๋•Œ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉ
    • DI๋ฅผ ์ด์šฉํ•ด์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์ฃผ์ž…
    • DI์˜ ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• : Setter Injection, Constructor Injection, Method Injection 
  • POJO(Plain Old Java Object) 
    • ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ์ €์žฅ๋˜๋Š” ์ž๋ฐ”๊ฐ์ฒด๋Š” ํŠน์ •ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜, ์ƒ์† ์—†์ด๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์ผ๋ฐ˜์ ์ธ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์นญํ•˜๊ธฐ ์œ„ํ•œ ๋ณ„์นญ ๊ฐœ๋…
  • IoC(Inversion Of Control - ์ œ์–ด์˜ ์—ญ์ „)
    • ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์—์„œ Object๊ฐ„์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ๋Ÿฐํƒ€์ž„์— ๊ฒฐ์ •
    • ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ๋А์Šจํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋จ
    • ์ œ์–ด์˜ ์—ญ์ „ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• : DL (Dependency Lookup)๊ณผ DI(Dependency Injection) 

DI์™€ IoC Container์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ์ž์„ธํžˆ

DI(Dependency Injection) (=๋ถ€ํ’ˆ์กฐ๋ฆฝ)

ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ์ฒด์ง€ํ–ฅ์œผ๋กœ ๋งŒ๋“ค๊ฒŒ ๋  ๊ฒฝ์šฐ, ๊ฐ์ฒด๋“ค์˜ ์กฐ๋ฆฝ๊ด€๊ณ„๋กœ ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋œ๋‹ค.

A๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ B๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๊ฐ์ฒดํ™” ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1. ์ผ์ฒดํ˜•

class A{
  private B b;  
    
  public A(){
    b = new B(); //A๊ฐ€ B๋ฅผ ์ง์ ‘ ์ƒ์„ฑ
  }
}

A๊ฐ€ ์ƒ์„ฑ๋ ๋•Œ B์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๊ฐ€์ง„๋‹ค.
์ด ๊ฒฝ์šฐ A๊ฐ€ B๋ฅผ ์ผ์ฒดํ˜•์œผ๋กœ ๊ฐ€์กŒ๋‹ค๊ณ  ํ•ด์„œ Composition(์ผ์ฒดํ˜•) has a ๊ด€๊ณ„๋ผ๊ณ  ํ•œ๋‹ค

์ด๋•Œ B๋ฅผ A์˜ ๋ถ€ํ’ˆ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด B๋ฅผ Dependency(๋ถ€ํ’ˆ)๋ผ๊ณ  ํ•œ๋‹ค.

 

2. ์กฐ๋ฆฝํ˜•

class A{
  private B b;  
    
  public A(){
    // b = new B();
  }

  public void setB(B b){
    this.b = b;
  }
}

A๊ฐ€ B๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
์™ธ๋ถ€์—์„œ ์ƒ์„ฑํ•ด์„œ ๊ทธ ์ƒ์„ฑ์„ setB๋กœ settingํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
์ด ๊ฒฝ์šฐ ์กฐ๋ฆฝํ˜• ๊ด€๊ณ„๋ผ๊ณ  ํ•œ๋‹ค.

 

์ผ์ฒดํ˜• ๋ณด๋‹ค ์กฐ๋ฆฝํ˜•์ด ๊ฒฐํ•ฉ๋ ฅ์ด ํ›จ์”ฌ ๋” ๋‚ฎ๊ณ  ๋‹ค๋ฅธ ๋ถ€ํ’ˆ์œผ๋กœ ๋ฐ”๊ฟ” ๋ผ์šธ ์ˆ˜ ์žˆ๋‹ค.

  • 1๋ฒˆ ์ผ์ฒดํ˜•์˜ ๊ฒฝ์šฐ
A a = new A();

์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ A์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋ฉด ๊ทธ ์•ˆ์— ๋ถ€ํ’ˆ์ด ๋ญ๊ฐ€ ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒŒ ๋˜๊ณ  ๋ถ€ํ’ˆ์„ ๋ฐ”๊ฟ” ๋ผ์šธ ์ˆ˜ ์—†๋‹ค.

 

  • 2๋ฒˆ ์กฐ๋ฆฝํ˜•์˜ ๊ฒฝ์šฐ
B b = new B();
A a = new A();

a.setB(b);

A์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  A๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ถ€ํ’ˆ B(Dependency)๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฝ‚์•„์ค€๋‹ค.(Injection)(=Dependency Injection)

์žฅ์  : ๋ถ€ํ’ˆ์„ ๋ฐ”๊ฟ” ๋ผ์šธ ์ˆ˜ ์žˆ๋‹ค.
๋‹จ์  : ๋ถ€ํ’ˆ์„ ์กฐ๋ฆฝํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ๋‹ค

 

Injection์˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

  • Setter Injection
B b = new B();
A a = new A();

a.setB(b);
  • Construction Injection
B b = new B();
A a = new A(b);

 

IoC Container

์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ถ€ํ’ˆ๋“ค์„ ์ฃผ๋ฌธ์„œ์— ์ž‘์„ฑํ•ด์„œ Spring์—๊ฒŒ ์ œ๊ณตํ•˜๋ฉด ๋ถ€ํ’ˆ์„ ์ƒ์„ฑํ•˜๊ณ  ์กฐ๋ฆฝํ•ด ์ค€๋‹ค.

์ฃผ๋ฌธ์„œ ์ž‘์„ฑ ๋ฐฉ๋ฒ• ๋‘ ๊ฐ€์ง€
1. xmlํŒŒ์ผ
2. Annotation

 

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๊ทธ๊ฒƒ๋“ค์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฆ‡์ด ํ•„์š”ํ•œ๋ฐ ์ด๋ฅผ Spring์—์„œ Container ๋ผ๊ณ  ํ•œ๋‹ค.

 

IoC Container๋ผ๊ณ  ํ•˜๋Š” ์ด์œ 

์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ผ์ฒดํ˜•์œผ๋กœ ์ œํ’ˆ์„ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด Aํด๋ž˜์Šค๊ฐ€ Bํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ , Bํด๋ž˜์Šค๊ฐ€ Cํด๋ž˜์Šค๋ฅผ, Cํด๋ž˜์Šค๊ฐ€ Dํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค.
์ฆ‰ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

๋ฐ˜๋ฉด ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์กฐ๋ฆฝํ˜•์€ Dํด๋ž˜์Šค, Cํด๋ž˜์Šค, Bํด๋ž˜์Šค, Aํด๋ž˜์Šค ์ˆœ์œผ๋กœ ๋งŒ๋“ค์–ด ์ง„๋‹ค.
์ฆ‰ ์—ญ์ˆœ(Inversion)์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค.

์œ„์™€ ๊ฐ™์€ ์ด์œ ๋กœ IoC(Inversion of Control) Container๋ผ๊ณ  ํ•œ๋‹ค.

๋‹จ์ˆœํžˆ ๋ถ€ํ’ˆ๋งŒ ๋‹ด๊ณ  ์žˆ๋‹ค๋ฉด Dependency Container๋ผ๊ณ  ํ• ํ…๋ฐ IoC Container ๋ผ๊ณ  ํ•˜๋Š” ์ด์œ ๋Š” ๊ฒฐํ•ฉ๊นŒ์ง€ ๋˜์„œ ๋‹ด๊ฒจ์ง„๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ์ข€ ๋” ๊ฐ•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด์„œ ์ด๋‹ค.

 


Spring DI ์šฉ์–ด

  • ๋นˆ(Bean)
    • ์Šคํ”„๋ง์ด IoC ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งํ•จ
    • ์Šคํ”„๋ง์ด ์ง์ ‘ ๊ทธ ์ƒ์„ฑ๊ณผ ์ œ์–ด๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๋งŒ์„ Bean์ด๋ผ๊ณ  ๋ถ€๋ฆ„
  • ๋นˆ ํŒฉํ† ๋ฆฌ(Bean Factory)
    • ์Šคํ”„๋ง์˜ IoC๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํ•ต์‹ฌ ์ปจํ…Œ์ด๋„ˆ
    • Bean์„ ๋“ฑ๋ก, ์ƒ์„ฑ, ์กฐํšŒ, ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹น
    • ์ผ๋ฐ˜์ ์œผ๋กœ Bean Factory๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ด๋ฅผ ํ™•์žฅํ•œ ApplicationContext๋ฅผ ์ด์šฉํ•œ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ(Application Context)
    • Bean Factory๋ฅผ ํ™•์žฅํ•œ IoC ์ปจํ…Œ์ด๋„ˆ
    • Bean์„ ๋“ฑ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์€ Bean Factory์™€ ๋™์ผ
    • ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ๊ฐ์ข… ๋ถ€๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์ถ”๊ฐ€๋กœ ์ œ๊ณต
    • Bean Factory๋ผ๊ณ  ๋ถ€๋ฅผ ๋•Œ๋Š” ์ฃผ๋กœ ๋นˆ์˜ ์ƒ์„ฑ๊ณผ ์ œ์–ด์˜ ๊ด€์ ์—์„œ ์ด์•ผ๊ธฐ ํ•˜๋Š”๊ฒƒ์ด๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ๋ผ๊ณ  ํ•  ๋•Œ๋Š” ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ง€์› ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ํฌํ•จํ•ด์„œ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋จ.
  • ์„ค์ •์ •๋ณด/์„ค์ • ๋ฉ”ํƒ€์ •๋ณด
    • ์Šคํ”„๋ง์˜ ์„ค์ •์ •๋ณด๋ž€ Application Context ๋˜๋Š” Bean Factory๊ฐ€ IoC๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”ํƒ€์ •๋ณด๋ฅผ ๋งํ•œ๋‹ค. 
    • ์„ค์ •์ •๋ณด๋Š” IoC ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” Bean๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ตฌ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ๋จ.
  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ
    • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” IoC ์ปจํ…Œ์ด๋„ˆ, Application Context๋ฅผ ํฌํ•จํ•ด์„œ ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํ†ตํ‹€์–ด ๋งํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ.

 

SpringContainer

 


๋นˆ ์ƒ์„ฑ๋ฒ”์œ„

  • ์‹ฑ๊ธ€ํ†ค ๋นˆ(Singleton Bean)
    • ์Šคํ”„๋ง ๋นˆ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ '์‹ฑ๊ธ€ํ†ค'์œผ๋กœ ๋งŒ๋“ค์–ด์ง.
    • ๊ทธ๋Ÿฌ๋ฏ€๋กœ, ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ๋นˆ์˜ ์ธ์Šคํ„ด์Šค๋Š” ํ•ญ์ƒ ๋™์ผํ•จ
    • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•ญ์ƒ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ scope๋ฅผ prototype์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•จ.