Dependency Injection을 번역하면 종속성 주입이라고 한다.
코드로 보자면
public class ExamConsole {
private Exam exam;
public void print() {
System.out.println("--------------------------");
System.out.println("성적출력");
System.out.println("--------------------------");
System.out.printf("kor : %d\n",exam.getKor());
System.out.printf("eng : %d\n",exam.getEng());
System.out.printf("math : %d\n",exam.getMath());
System.out.printf("total : %d\n",exam.total());
System.out.printf("avg : %d\n",exam.avg());
}
}
Exam 객체를 변수로 사용하는 ExamConsole 클래스가 있다.
한 클래스에서 다른 클래스의 객체를 부품으로 사용하는 것을 Dependency라고 한다.
그렇다면 그 부품을 Injection 시켜주는 방법에는 두 가지가 있다.
Exam exam = new Exam(1,1,1);
ExamConsole console = new ExamConsole(exam);
생성자를 통해 Exam 객체를 Injection 해주었다. (주입, 꽂아넣음)
이 경우 처음 주입한 Exam 객체를 계~속 사용하며 바꿀 수 없다.
왜냐면 생성자는 한 번만 부를 수 있으니까!
Exam exam = new Exam(1,1,1);
ExamConsole console = new ExamConsole();
console.setExam(exam);
Setter 함수를 통해 Exam 객체를 Injection 해주었다.
이 경우 Setter를 통해 객체를 바꿔 넣을 수 있다.