๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒท Spring/๊ฐœ๋…

[Spring] ์ž๋ฐ” ํด๋ž˜์Šค์™€ ์Šคํ”„๋ง ๋นˆ ํด๋ž˜์Šค์˜ ์ฐจ์ด๋ฅผ ์ฝ”๋“œ๋กœ ์‰ฝ๊ฒŒ ์•Œ์•„๋ณด์ž!

by hyeong._.ing 2026. 6. 11.

 

 

์Šคํ”„๋ง์„ ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?
์ž๋ฐ” ํด๋ž˜์Šค๋‚˜ ์Šคํ”„๋ง ํด๋ž˜์Šค๋‚˜
๊ฑฐ์˜ ๋น„์Šทํ•˜์ง€ ์•Š์„๊นŒ? ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด
์ด๋ฒˆ ํฌ์ŠคํŒ…์œผ๋กœ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ์•Œ์•„๋ณด์ž!

 

 

 

 

1. ์ž๋ฐ” ํด๋ž˜์Šค

  • ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ‹€์ด๋‹ค.
  • ํด๋ž˜์Šค ๋‚ด๋ถ€์—๋Š” ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜์™€ ํ–‰๋™์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋˜์–ด์žˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๋Š” ํ•„์š”ํ•  ๋•Œ new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์˜ˆ์‹œ ์ฝ”๋“œ_ ์นดํŽ˜ ์‚ฌ์žฅ๋‹˜์ด ์ปคํ”ผ๋ฅผ ๋งŒ๋“ค๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ๋จธ์‹ ์„ ๊ตฌ์ž…ํ•ด์„œ ๋งŒ๋“ค์–ด์ค˜์š”.
// 1. ์‹คํ–‰ ํด๋ž˜์Šค
// ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜๋ฉด ๊ฐ€์žฅ ๋จผ์ € Main ํด๋ž˜์Šค์˜ main ๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค.
public class Main {
    public static void main(String[] args) {
    
        // 2. ์ผ๋‹จ ์นดํŽ˜๋ฅผ ์ง์ ‘ ์ฐจ๋ ค์•ผ(new) ํ•œ๋‹ค.
        // ๊ทธ๋ž˜์„œ ์ปดํ“จํ„ฐ๋Š” Cafe ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž Cafe()๋กœ ์ด๋™ํ•œ๋‹ค. -> 3๋ฒˆ์œผ๋กœ ์ด๋™
        Cafe myCafe = new Cafe();

        // 7. ์ฐจ๋ ค์นœ ์นดํŽ˜(myCafe)์—์„œ ์ปคํ”ผ๋ฅผ ์ฃผ๋ฌธํ•œ๋‹ค. -> 8๋ฒˆ์œผ๋กœ ์ด๋™
        myCafe.orderCoffee();
        
    }
}
public class Cafe {
    private CoffeeMachine coffeeMachine;

    // 3. 2๋ฒˆ์— ์˜ํ•ด ํ˜ธ์ถœ๋˜์—ˆ๋‹ค.
    // Cafe ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋งŒ๋“ค์–ด์ง€๋ฉด์„œ ์ด ์ƒ์„ฑ์ž๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
    public Cafe() {
        
        // 4. ์นดํŽ˜ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ปคํ”ผ ๋จธ์‹ ์„ ์ง์ ‘ ์ƒˆ๋กœ ๊ตฌ๋งค(new)ํ•ฉ๋‹ˆ๋‹ค.
        // ์ปดํ“จํ„ฐ๋Š” CoffeeMachine ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. -> 5๋ฒˆ์œผ๋กœ ์ด๋™
        this.coffeeMachine = new CoffeeMachine();  
        
        // 6. [CoffeeMachine ๊ฐ์ฒด ์ƒ์„ฑ ์™„๋ฃŒ] ๋จธ์‹ ์ด ์ž˜ ๋ฐฐ์น˜๋˜์—ˆ์œผ๋‹ˆ Cafe ์ƒ์„ฑ์ž์—์„œ ๋‚˜๊ฐ„๋‹ค.
        // ๋‹ค์‹œ Main ํด๋ž˜์Šค์˜ 2๋ฒˆ ์ค„๋กœ ๋Œ์•„๊ฐ€๊ณ  ๊ทธ ๋‹ค์Œ ์ค„์„ ์‹คํ–‰ํ•  ์ค€๋น„๋ฅผ ํ•œ๋‹ค.
    }

    // 8. orderCoffee ๋ฉ”์„œ๋“œ๊ฐ€ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.
    public void orderCoffee() {
        
        // 9. ๋งŒ๋“ค์–ด ๋‘” coffeeMachine ๊ฐ์ฒด์˜ brew() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
        // ์ปดํ“จํ„ฐ๋Š” CoffeeMachine์˜ brew() ๋ฉ”์„œ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค -> 10๋ฒˆ
        coffeeMachine.brew();
        
        // 11. brew( ) ์‹คํ–‰ ์™„๋ฃŒ ํ›„ ๋Œ์•„์™€์„œ ๋‹ค์Œ ๋ฌธ์žฅ์„ ์ถœ๋ ฅํ•œ๋‹ค.
        System.out.println("์ฃผ๋ฌธํ•˜์‹  ์ปคํ”ผ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค!");
        
        // ์ด์ œ orderCoffee()์˜ ๋ชจ๋“  ์ผ์ด ๋๋‚ฌ์œผ๋ฏ€๋กœ ํ˜ธ์ถœํ–ˆ๋˜ Main ํด๋ž˜์Šค์˜ 7๋ฒˆ ์ค„๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
    }
}

public class CoffeeMachine {
    
    // 5. CoffeeMachine ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋œ๋‹ค.
    // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋กœ ์ธํ•ด ์ƒ๋žต๋˜์—ˆ๊ณ  ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ์ž๋™์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•œ ๋’ค 6๋ฒˆ์œผ๋กœ ๊ฐ„๋‹ค.

    // 10. ์ปคํ”ผ ๋จธ์‹ ์ด ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜์—ฌ ์—์Šคํ”„๋ ˆ์†Œ๋ฅผ ๋‚ด๋ฆฝ๋‹ˆ๋‹ค.
    public void brew() {
        System.out.println("โ˜• ์—์Šคํ”„๋ ˆ์†Œ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.");
        // ์‹คํ–‰์ด ๋๋‚ฌ์œผ๋‹ˆ ์ž์‹ ์„ ๋ถˆ๋ €๋˜ 9๋ฒˆ ์ชฝ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.
    }
}
์ผ๋ฐ˜ ์ž๋ฐ” ํด๋ž˜์Šค๋Š” ์ข€ ๋ณต์žกํ•˜๊ฒŒ ๋˜์–ด์žˆ๋‹ค. (์˜ค๋žœ๋งŒ์— ์ด๋Ÿฐ ์ฝ”๋“œ ์„ค๋ช… ์ ์œผ๋ ค๋‹ˆ๊นŒ ๋จธ๋ฆฌ์•„ํ””ใ…œ-ใ…œ) ๊ฐœ๋ฐœ์ž๋Š” ํ•„์š”ํ•  ๋•Œ ๋งˆ๋‹ค ๋งŒ๋“ค์–ด์„œ ์กฐ๋ฆฝํ•˜๊ณ  ๋‹ค ์“ฐ๋ฉด ๋„ฃ์–ด๋‘๊ฑฐ๋‚˜ ๋ฒ„๋ฆฌ๋Š” ๊ณผ์ •์„ ์ง์ ‘ ์ ์–ด์•ผ ํ•œ๋‹ค. 

 

 

 

 


 

 

 

 

 

2. ์Šคํ”„๋ง Bean ํด๋ž˜์Šค

  • ์Šคํ”„๋ง ํ•ต์‹ฌ ์ปจํ…Œ์ด๋„ˆ(IoC ์ปจํ…Œ์ด๋„ˆ)์— ์˜ํ•ด ์ƒ์„ฑ, ๊ด€๋ฆฌ, ์†Œ๋ฉธ๋˜๋Š” ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ํด๋ž˜์Šค ์œ„์— ํŠน์ • ์–ด๋…ธํ…Œ์ด์…˜(์˜ˆ_ @Component)์„ ๋ถ™์—ฌ๋‘๋ฉด ์Šคํ”„๋ง์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ผค ๋•Œ ๊ด€๋ฆฌํ•ด์•ผํ•  ๊ฐ์ฒด๋ฅผ ์•Œ์•„์ฐจ๋ฆฌ๊ณ  ์•Œ์•„์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“  ๋’ค ์ปจํ…Œ์ด๋„ˆ์— ๋ณด๊ด€ํ•œ๋‹ค.

 

  • ์˜ˆ์‹œ์ฝ”๋“œ_ ์นดํŽ˜ ์‚ฌ์žฅ๋‹˜์ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ์ปคํ”ผ ๋จธ์‹ ์„ Bean ๋“ฑ๋ก์„ ํ•ด๋‘๊ณ  ํ•„์š”ํ•  ๋•Œ ๊ฐ€์ ธ๋‹ค ์จ์š”
// ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋™ํ•˜๋ฉด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋จผ์ € ์‹คํ–‰๋œ๋‹ค.
// ์Šคํ”„๋ง์€ @Component ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค๋“ค์„ ์ฐพ์•„๋‚ธ๋‹ค.


// 1. ์Šคํ”„๋ง์ด @Component๋ฅผ ๋ณด๊ณ  CoffeeMachine ๊ฐ์ฒด๋ฅผ ๋”ฑ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์— ๋ณด๊ด€ํ•œ๋‹ค.
@Component
public class CoffeeMachine {
    
    // 8. ์ปคํ”ผ๋จธ์‹ ์ด ์—์Šคํ”„๋ ˆ์†Œ๋ฅผ ๋‚ด๋ฆฐ๋‹ค.
    public void brew() {
        System.out.println("โ˜• ์Šคํ”„๋ง์ด ๊ด€๋ฆฌํ•˜๋Š” ๋จธ์‹ ์—์„œ ์—์Šคํ”„๋ ˆ์†Œ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.");
        
        // ์‹คํ–‰์ด ๋๋‚ฌ์œผ๋‹ˆ ์ž์‹ ์„ ๋ถˆ๋ €๋˜ 7๋ฒˆ ์ชฝ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.
    }
}


// 2. ์Šคํ”„๋ง์ด Cafe ํด๋ž˜์Šค๋„ ํ™•์ธํ•˜๋‹ˆ @Component๋ฅผ ๋ณด๊ณ  ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ด€ํ•œ๋‹ค.
@Component
public class Cafe {
    
    private final CoffeeMachine coffeeMachine;

    // 3. ์Šคํ”„๋ง์ด Cafe ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ ค๊ณ  ์ƒ์„ฑ์ž๋ฅผ ๋ณธ๋‹ค.
    // ์ด๋•Œ @Autowired๋ฅผ ๋ฐœ๊ฒฌํ•œ๋‹ค.
    // ๊ทธ๊ฑธ๋ณด๊ณ  Cafe๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด CoffeeMachine์ด ํ•„์š”ํ•œ ๊ฑธ ๊นจ๋‹ซ๋Š”๋‹ค.
    @Autowired 
    public Cafe(CoffeeMachine coffeeMachine) {
    
        // 4. ์Šคํ”„๋ง์ด ๋ฐฉ๊ธˆ ์ „(1๋ฒˆ)์— ๋งŒ๋“ค์–ด ๋‘” CoffeeMachine ๊ฐ์ฒด๋ฅผ ์ฐพ์•„์„œ ๊ฝ‚๋Š”๋‹ค.
        // ์ด๊ฒŒ ์˜์กด์„ฑ ์ฃผ์ž…(DI)์ด๋‹ค. 
        this.coffeeMachine = coffeeMachine; 
        
        // 5. Cafe ๊ฐ์ฒด๊นŒ์ง€ ์™„๋ฒฝํ•˜๊ฒŒ ์กฐ๋ฆฝ๋˜์–ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก๋˜์—ˆ๋‹ค.
        
    }

    
    // 6. ์†๋‹˜์ด ์ปคํ”ผ๋ฅผ ์ฃผ๋ฌธํ•˜์—ฌ orderCoffee() ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
    // ์ด์ œ ๊ฐœ๋ฐœ์ž๋Š” new Cafe()๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
    // ์Šคํ”„๋ง์ด ์™„์„ฑํ•ด ๋‘” Cafe ๋นˆ์„ ๊บผ๋‚ด์–ด ์“ด๋‹ค.
    public void orderCoffee() {
        
        // 7. ์Šคํ”„๋ง์ด ๋ฏธ๋ฆฌ ๊ฝ‚์•„๋‘์—ˆ๋˜(4๋ฒˆ) coffeeMachine์˜ brew() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
        // ์ปดํ“จํ„ฐ๋Š” CoffeeMachine์˜ brew() ๋ฉ”์„œ๋“œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. -> 8๋ฒˆ์œผ๋กœ ์ด๋™
        coffeeMachine.brew();
        
        // 9. brew()์—์„œ ๋Œ์•„์™”์œผ๋ฉด ๋‹ค์Œ ๋ฌธ์žฅ์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
        System.out.println("์ฃผ๋ฌธํ•˜์‹  ์ปคํ”ผ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค!");
    }
}
์Šคํ”„๋ง์—๊ฒŒ ๊ด€๋ฆฌ๋ฅผ ๋งก๊ธฐ๋ฉด ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•ด์ง€๊ณ  ์œ ์—ฐํ•ด์ง„๋‹ค. ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋งŒ ๋ด๋„ ์ฐจ์ด๊ฐ€ ํ™• ๋А๊ปด์ง„๋‹ค.

 

 

 

 


 

 

 

 

3. ์ž๋ฐ” ํด๋ž˜์Šค์™€ ์Šคํ”„๋ง ๋นˆ ํด๋ž˜์Šค์˜ ์ฐจ์ด

๊ตฌ๋ถ„ ์ผ๋ฐ˜ ์ž๋ฐ” ํด๋ž˜์Šค (๊ฐ์ฒด) ์Šคํ”„๋ง ๋นˆ(Bean)
์ƒ์„ฑ ์ฃผ์ฒด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ฝ”๋“œ new๋กœ ์ƒ์„ฑํ•œ๋‹ค ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค
์ƒ๋ช… ์ฃผ๊ธฐ ๊ด€๋ฆฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ƒ์„ฑํ•˜๊ณ  ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(GC)๊ฐ€ ์†Œ๋ฉธ์‹œํ‚จ๋‹ค ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ๋ฉธ๊นŒ์ง€ ์ „๋ถ€ ๊ด€๋ฆฌํ•œ๋‹ค.
๊ฐ์ฒด์˜ ๊ฐœ์ˆ˜ new๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ƒ๊ธด๋‹ค ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๋‹จ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋˜์–ด ๊ณต์œ ๋œ๋‹ค.
์˜์กด์„ฑ ์ฃผ์ž… (DI) ํ•„์š”ํ•œ ๊ฐ์ฒด๊ฐ€ ์ด๋‹ค๋ฉด ์ง์ ‘ ์ƒ์„ฑํ•ด์ค˜์„œ ๋„ฃ์–ด์•ผํ•œ๋‹ค ์Šคํ”„๋ง์ด ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์•Œ์•„์„œ ์ฐพ์•„์„œ ๊ฝ‚์•„์ค€๋‹ค (@Autowired)

 

 

  • ๊ด€๋ฆฌ

์ž๋ฐ” ๊ฐ์ฒด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€, ์Šคํ”„๋ง ๋นˆ์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•œ๋‹ค.

 

 

  • ์ƒ๋ช…์ฃผ๊ธฐ

์ž๋ฐ”์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” 3๋‹จ๊ณ„๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์Šคํ”„๋ง์ด ํ›จ์”ฌ ๋ณต์žกํ•œ ๋‹จ๊ณ„์  ์ฒ˜๋ฆฌ๋ฅผ ๊ฑฐ์นœ๋‹ค. 

 

 

  • ์Šค์ฝ”ํ”„
    ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์–ด๋–ค ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜, ๊ฐ์ฒด ๋“ฑ์ด ์œ ํšจํ•œ ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ž๋ฐ” ๊ฐ์ฒด๋Š” ์ฃผ๋กœ ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค ์ค‘์‹ฌ์ด๋‚˜ ๋นˆ์€ ์‹ฑ๊ธ€ํ†ค์ด ๊ธฐ๋ณธ์ด๋‹ค.

 

 

  • ์˜์กด์„ฑ ์ฃผ์ž…

์ž๋ฐ” ๊ฐ์ฒด๋Š” ์ˆ˜๋™์œผ๋กœ ์—ฐ๊ฒฐํ•˜์ง€๋งŒ ๋นˆ์€ DI๋ฅผ ํ†ตํ•ด ์ž๋™ ์—ฐ๊ฒฐ๋œ๋‹ค.  ->  ์˜์กด์„ฑ ์ฃผ์ž…์œผ๋กœ ๊ฒฐํ•ฉ๋„๋ฅผ ํ•ด์ œํ•œ๋‹ค.

 

 

  • ์ •๋ฆฌ
์Šคํ”„๋ง Bean์€ ์Šคํ”„๋ง IoC ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ธ์Šคํ„ด์Šคํ™”๋˜๊ณ  ์กฐ๋ฆฝ๋˜๋ฉฐ ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ฐ˜๋ฉด ์ผ๋ฐ˜์ ์ธ ์ž๋ฐ” ๊ฐ์ฒด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑํ•˜๊ณ  ์ œ์–ดํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋ชจ๋“  ์Šคํ”„๋ง Bean์€ ์ž๋ฐ” ๊ฐ์ฒด์— ํ•ด๋‹นํ•˜์ง€๋งŒ, ๋ชจ๋“  ์ž๋ฐ” ๊ฐ์ฒด๊ฐ€ ์Šคํ”„๋ง Bean์€ ์•„๋‹ˆ๋‹ค.

์Šคํ”„๋ง Bean์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ž‘๋™ํ•˜๋ฉฐ ์ฃผ๋กœ ์• ๋…ธํ…Œ์ด์…˜์ด๋‚˜ ์„ค์ • ํŒŒ์ผ์„ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก๋œ๋‹ค. ์ด๋Ÿฐํ•œ Beane๋“ค์€ ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ํ•„์š”ํ•œ ์˜์กด์„ฑ์ด ์ฃผ์ž…๋˜๊ณ  ์ ์ ˆํ•œ ๊ตฌ์„ฑ๋œ ์ƒํƒœ๋กœ ์ œ๊ณต๋œ๋‹ค.

์ผ๋ฐ˜ ์ž๋ฐ” ํด๋ž˜์Šค๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ์˜ํ•ด ์†Œ๋ฉธ๋  ๋•Œ๊นŒ์ง€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ทธ ์‚ฌ์šฉ ๋ฒ”์œ„๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์Šคํ”„๋ง Bean์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ๋ฉธ๊นŒ์ง€์˜ ์ „ ๊ณผ์ •์„ ๋‹ด๋‹นํ•˜๋Š” ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ์ปจํ…Œ์ด๋„ˆ Bean์˜ ์ƒ์„ฑ, ์˜์กด์„ฑ ์ฃผ์ž…, ์ดˆ๊ธฐํ™”, ์‚ฌ์šฉ ๊ทธ๋ฆฌ๊ณ  ์ตœ์ข…์ ์ธ ์†Œ๋ฉธ ๋‹จ๊ณ„๋ฅผ ๋‚ด๋ถ€ ์›Œํฌํ”Œ๋กœ์šฐ์— ๋”ฐ๋ผ ์ฒด๊ณ„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ์ฝ์—ˆ๋‹ค๋ฉด ๋‹ค์‹œ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ดค์„ ๋•Œ ํ›จ์”ฌ ์ž˜ ์ดํ•ด๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค!