목표 xml 대신 Java 코드를 통해 설정파일을 작성한다. 기존 xml 설정 파일 작성방식 위와 같이 xml로 작성된 설정파일을 Java 코드로 만들면 아래와 같다. Java 코드로 작성한 설정 파일 @ComponentScan("spring.di.ui") @Configuration public class NewlecDIConfig { @Bean public Exam exam() { return new NewlecExam(); } } @Configuration : Java로 작성한 설정 파일임을 알림 @ComponentSacn("spring.di.ui") = @Bean public Exam exam(){return new NewlecExam()} = 으로 똑같이 작성할 수 있다. @Bean 어노테이션은 ..
뉴렉쳐 스프링 프레임워크 정리/Part1. DI
목표 xml 대신 @Component 어노테이션을 사용하여 객체를 생성한다. (@Component = @Controller, @Service, @Repository) 기존 xml 객체 생성 방식 public class GridExamConsole implements ExamConsole { private Exam exam; ...(생략)... @Autowired @Override public void setExam(Exam exam) { this.exam=exam; } } 여기서 console이라는 id를 가진 Dependency를 어노테이션을 활용해 생성해보자. @Componet 어노테이션을 활용한 객체 생성 방식 //컴포넌트 이름 지정 안 해주면 Class 네임으로 IoC 컨테이너에서 가져와야 함 @..
목표 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..
목표 이전 시간에는 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..