๋ฐ์ํ
IoC(์ ์ด์ ์ญ์ ), DI(์์กด์ฑ ์ฃผ์ )
IoC๋ ์ค๊ณ์์น์ ํ๋นํ๊ณ , DI๋ ๋์์ธ ํจํด์ ํด๋น
์ข์ ์ฝ๋๋ฅผ ์ํ Spring์ IoC์ DI
๐โ๏ธ ์ข์ ์ฝ๋๋?
- ๊ฐ๋จํ ๋ ผ๋ฆฌ
- ์ค๋ณต ์ ๊ฑฐํ๊ณ ๋ช ํํ ํํ
- ์ฝ๋๋ฅผ ์ฒ์๋ณด๋ ์ฌ๋๋ ์ฝ๊ฒ ์ดํดํ๊ณ ์์ ๊ฐ๋ฅ
- ์์กด์ฑ์ ์ต์ํ
- ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋๋ผ๊ณ ํฌ๊ฒ ๊ตฌ์กฐ ๋ณ๊ฒฝ โ
- ....
- IoC์ ๋ํด
IoC๋ DI๋ก๋ ์๋ ค์ ธ ์๋ค
๋ผ๊ณ ์๊ฐํ๊ณ ์์ - ==
DI ํจํด์ ์ฌ์ฉํ์ฌ IoC ์ค๊ณ ์์น์ ๊ตฌํํ๊ณ ์๋ค
์์กด์ฑ?
public class Consumer {
void eat() {
Chicken chicken = new Chicken();
chicken.eat();
}
public static void main(String[] args) {
Consumer consumer = new Consumer();
consumer.eat();
}
}
class Chicken {
public void eat() {
System.out.println("์นํจ์ ๋จน๋๋ค.");
}
}
- ์ ์ฝ๋์์ ๋ง์ฝ ์นํจ์ด ์๋๋ผ ํผ์๋ฅผ ๋จน๊ณ ์ถ์ดํ๋ค๋ฉด??? -> ๋ง์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด์ผํจ
public class Consumer {
void eat(Food food) {
food.eat();
}
public static void main(String[] args) {
Consumer consumer = new Consumer();
consumer.eat(new Chicken());
consumer.eat(new Pizza());
}
}
interface Food {
void eat();
}
class Chicken implements Food{
@Override
public void eat() {
System.out.println("์นํจ์ ๋จน๋๋ค.");
}
}
class Pizza implements Food{
@Override
public void eat() {
System.out.println("ํผ์๋ฅผ ๋จน๋๋ค.");
}
}
- Java์ Interface ๋คํ์ฑ์ ์๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ๋ฉด ๊ณ ๊ฐ์ด ์ด๋ ํ ์์์ ์๊ตฌํ๋๋ผ๋ ์ฝ๊ฒ ๋์ฒ ๊ฐ๋ฅ
- ์ด๋ฌํ ๊ด๊ณ๋ฅผ
์ฝํ ๊ฒฐํฉ
๋ฐ์ฝํ ์์กด์ฑ
์ด๋ผ๊ณ ํจ
์ฃผ์ ?
- ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ํตํด ํ์๋ก ํ๋ ๊ฐ์ฒด๋ฅผ ํด๋น ๊ฐ์ฒด์ ์ ๋ฌํ๋ ๊ฒ
- ํ๋ ์ฃผ์ : ํ๋์ ์ธ์คํด์ค ์์ฑ
- ๋ฉ์๋ ์ฃผ์ : set ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ฃผ์
- ์์ฑ์ ์ฃผ์
์ ์ด์ ์ญ์ ?
์์ ์ฒซ๋ฒ์งธ ์ฝ๋์์ Customer๊ฐ ์ง์ Food๋ฅผ ๋ง๋ค์ด ๋จน์๊ธฐ ๋๋ฌธ์ ์๋ก์ด Food๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ถ๊ฐ์ ์ธ ์ฝ๋ ๋ณ๊ฒฝ์ด ๋ถ๊ฐํผ
-> ์ด๋์ ์ ์ด์ ํ๋ฆ์ด Customer -> Food
๋ ๋ฒ์งธ ์ฝ๋์์๋ Food๋ฅผ Customer์๊ฒ ์ ๋ฌํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํจ์ผ๋ก์จ Customer๋ ์ถ๊ฐ์ ์ธ ์ฝ๋ ๋ณ๊ฒฝ์ด ํ์ ์์
-> ์ ์ด์ ํ๋ฆ์ด Food -> Customer๋ก ์ญ์
728x90
๋ฐ์ํ
'๋ด์ผ๋ฐฐ์์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring ์ ๋ฌธ 2์ฃผ์ฐจ : JPA - 2 (0) | 2023.11.07 |
---|---|
Spring ์ ๋ฌธ 2์ฃผ์ฐจ : JPA - 1 (0) | 2023.11.07 |
Spring ์ ๋ฌธ 2์ฃผ์ฐจ: Layer Architecture (0) | 2023.11.03 |
Spring ์ ๋ฌธ 1์ฃผ์ฐจ: JDBC (0) | 2023.11.02 |
Spring ์ ๋ฌธ 1์ฃผ์ฐจ - ํ์ต ์ค๋นํ๊ธฐ (1) | 2023.11.02 |