목표 xml 대신 @Autowired 어노테이션을 사용하여 DI 하는 방법을 알아본다 기존 xml DI 방식 public class Program { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("spring/di/setting.xml"); ExamConsole console = (ExamConsole) context.getBean("console"); console.print(); } } exam과 console이라는 이름을 가진 객체를 DI하고, context 라는 IoC 컨테이너를 통해 해당 객체들을 가져와 사용한 모습이다. 어노테이션을 사용한 DI 방식 p..
DI
목표 이전 시간에는 bean태그의 ref 속성을 이용하여 참조 형식의 속성에 값을 설정했었다. 이번엔 value 속성을 이용하여 값 형식의 속성에 값을 설정해보자. 또 생성자를 통한 DI 방법과 콜렉션 DI 방법에 대해 알아본다. 값 형식의 속성에 값 설정하기 public class NewlecExam implements Exam{ private int kor; private int eng; private int math; private int com; public NewlecExam() { } public NewlecExam(int kor, int eng, int math, int com) { this.kor = kor; this.eng = eng; this.math = math; this.com = ..
목표 public class GridExamConsole implements ExamConsole { private Exam exam; public GridExamConsole() { } public GridExamConsole(Exam exam) { this.exam = exam; } @Override public void setExam(Exam exam) { this.exam=exam; } } 위 코드에서 볼 수 있듯이, Exam 클래스는 GridExamConsole이라는 클래스에 종속되어 있다. 이 때, Spring을 쓰지 않았을 경우와 썻을 경우 어떻게 DI를 수행하는지 살펴보자. 그리고 IoC 컨테이너에서 DI한 객체를 사용해보자. Spring을 쓰지 않은 DI 방식 public class Pr..
DI(Dependency Injection)란? 종속성 주입으로, 사용자가 원하는 객체 내부의 값(객체 등)을 Setter나 생성자를 통해 설정해주는 것이다. Composition has a (일체형) class A { private B b; public A(){ b = new B(); } } B가 A 내부에서 정해진다. Association has a (조립형) class A { private B b; public A(){ } public void setB(B b){ this.b=b; } } B를 A 외부에서 setter를 통해 가져와 정한다. 이 때 조립형에서 DI를 설명할 수 있는데 B b = new B(); // Dependency - 부품 A a = new A(); a.setB(b); // In..