본문 바로가기

스프링 프레임워크

뉴렉처[스프링 프레임워크] 5강~9강

5강 - Dependency를 직접 Injection 하기

6강 - 스프링 DI 설정을 위해 이클립스 플러그인 설치하기

7강 - Spring DI 지시서 작성하기 (Spring Bean Configuration)

클래스파일에서 Exam exam = new NewlectExam(); 으로 객체를 선언했다면

.xml 파일에서는 <bean id="객체명" class="객체화 할 클래스명" /> 으로 객체 생성을 세팅한다.

(객체화 할 클래스명은 패키지와 함께 써줌으로써 중복을 방지)

 

※ <bean>은 객체를 정의할때 쓰는 태그임

 

ex. ExamExamConsole console = new GridExamConsole(); 을 .xml 에서 세팅해보면

<bean id="console" class="spring.di.ui.GirdExamConsole" />

 

불러올때는 exam이라는 id값을 이용해서 불러온다.

 

console.setExam(exam); 와 같은 결합(injection)은 어떻게 할까?

console객체 내부에 set을 하는 것임으로 console 객체를 세팅한 bean 사이에 결합해주는 작업을 한다.

ex.

<bean id="console" class="spring.di.ui.GridExamConsole">

   <!-- console.setExam(exam); -->

   <property name="exam">

</bean>

 

원래 property의 name은 <property name="setExam" /> 으로 함으로써 setExam 함수를 호출한다고 쓰는데

관례적으로 set을 생략하고 <property name="Exam" /> 으로 쓰고

마지막으로 대문자를 소문자로 바꿔준다 <property name="exam" />

 

<property name="exam" value="" ref="" /> 으로 값을 세팅하는데 

set할 값이 value 타입이면 value="" 에 넣어주고, 참조값이면 ref=""에 넣어준다.

여기서는 참조값인 exam을 넣어줌으로써 <property name="exam" ref="exam" /> 이 된다.

 

8강 - Spring IoC 컨테이너 이용하기 (ApplicationContext 이용하기)

Spring에게 작업 시킬 지시서 만들기!!

 

1. ApplicationContext context = new ClassPathXmlApplicationContet("spring/di/setting.xml");

==> 이클립스의 ClassPath로 xml파일(지시서 내용)의 경로를 설정하여 context 지시서 만들기

 

2. ApplicationContext context = new FileSystemXmlApplicationContext("...");

==> 로컬 디스크내의 xml파일의 경로(지시서 내용)을 설정하여 context 지시서 만들기

 

3. ApplicationContext context = new xmlWebApplicationContext("...");
==> 웹으로 지시서 만들기

4. ApplicationContext context = new AnnotationConfigApplicationContext("...");
==> 어노테이션으로 지시서 만들기

 

context가 .xml에 있는 지시서를 잘 읽었다면 .xml(지시서)에 있는 내용처럼 객체를 두개 만들고 결합까지해서 IoC(컨테이너)에 담아 두었을 것이다.

 

context 컨테이너에서 꺼내오는 방법

 

case1) id값으로 꺼내오기

ExamConsole console = (ExamConsole)context.getBean("console");

//Object형식으로 반환하기에 (ExamConsole)으로 캐시팅 작업을 해주어야 한다.

 

case2) 자료형명으로 꺼내오기

ExamConsole console = context.getBean(ExamConsole.class);

//컨테이너에서 ExamConsole.class로 사용하고 있는 데이터 꺼내기

 

==> case2가 형식 변환할 필요가 없기에 선호하는 편

 

9강 - 값 형식 DI

<property name="" value="" /> 의 값을 세팅할때는 .xml에서 어떻게 해야할까?

아래와 같이 값을 설정할 수 있다.

 

실습!!!!!!

 

1. NewlectExam에 private int kor; private int eng; private int math; private int com; 

각 필드마다 setter 메서드를 만들어 준다.

 

=> 안만들어주면 setter메서드가 존재하지 않는다는 오류 메세지가 뜬다.

2. setting.xml 파일에 setter property 등록

<bean id="exam" class="spring.di.entity.NewlecExam">

   <property name="kor" value="10" />

   <property name="eng" value="10" />

   <property name="math" value="10" />

   <property name="com" value="10" />

</bean>

 

 

 

 

 

 

 

 

출처: 뉴렉쳐

www.youtube.com/watch?v=XtXHIDnzS9c&list=PLq8wAnVUcTFWxnsrMu5kS_jt_o8gpEiTR&index=1