๐ ์์กด ์ฃผ์ (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 |
๋๊ธ