JAVA/Theory

[Spring] ์˜์กด ์ฃผ์ž… (DI)

ITs Min 2024. 2. 29.

๐Ÿ” ์˜์กด ์ฃผ์ž… (Dependency Injection)

์˜์กด ์ฃผ์ž…์€ ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ์™ธ๋ถ€์—์„œ ์ฃผ์ž…ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ์ด๋Š” ๊ฐ์ฒด๊ฐ€ ์ง์ ‘ ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ , ์™ธ๋ถ€์—์„œ ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ฃผ์ž…๋ฐ›์•„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์‘์ง‘๋„๋ฅผ ๋†’์ธ๋‹ค. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ์ฃผ๋กœ ์ƒ์„ฑ์ž ์ฃผ์ž…, Setter ์ฃผ์ž…, ํ•„๋“œ ์ฃผ์ž… ๋“ฑ์˜ ๋ฐฉ์‹์œผ๋กœ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ” ์ƒ์„ฑ์ž ์ฃผ์ž…(Constructor Injection)

์ƒ์„ฑ์ž ์ฃผ์ž…์€ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด ๋ฐฉ์‹์€ ์Šคํ”„๋ง์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๋นˆ์„ ์ƒ์„ฑํ•˜๋Š” ์‹œ์ ์— ๋ชจ๋“  ์˜์กด์„ฑ์ด ํ•ด๊ฒฐ๋œ๋‹ค.

public class Car {
    private Engine engine;

    public Car(Engine engine) {
        this.engine = engine;
    }

    // ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋“ค...
}

๐Ÿ” Setter ์ฃผ์ž…(Setter Injection)

Setter ์ฃผ์ž…์€ ๋นˆ์„ ์ƒ์„ฑํ•œ ํ›„ setter ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด ๋ฐฉ์‹์€ ํ•„๋“œ ์ฃผ์ž…๊ณผ ๋‹ฌ๋ฆฌ ์ˆœํ™˜ ์˜์กด์„ฑ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์‰ฝ๋‹ค.

public class Car {
    private Engine engine;

    public void setEngine(Engine engine) {
        this.engine = engine;
    }

    // ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋“ค...
}

๐Ÿ” ํ•„๋“œ ์ฃผ์ž…(Field Injection)

ํ•„๋“œ ์ฃผ์ž…์€ ํด๋ž˜์Šค์˜ ํ•„๋“œ์— ๋ฐ”๋กœ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ฃผ๋กœ @Autowired ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํ•„๋“œ ์ฃผ์ž…์€ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์ด ๋‚ฎ์•„์ง€๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

public class Car {
    @Autowired
    private Engine engine;

    // ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋“ค...
}

์ด ์™ธ์—๋„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์˜์กด ์ฃผ์ž…์„ ํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ์ง€๋งŒ ์ž˜ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค...


 

'JAVA > Theory' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[MAVEN] SpringMVC ๋ฒ„์ „ 1  (0) 2024.03.05
[Spring] ์˜์กด ์ฃผ์ž…์„ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜  (1) 2024.03.04
Spring ํ”„๋ ˆ์ž„์›Œํฌ  (0) 2024.02.27
[Java] request ๊ฐ์ฒด  (0) 2024.02.06
[Java] POJO vs Non-POJO  (0) 2024.01.19

๋Œ“๊ธ€

TOP

๋Šฆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ๋• ๋„ˆ๋ฌด ๋Šฆ์€ ๊ฑฐ๋‹ค.