2013년 7월 23일 화요일

(ORACLEJAVA개발자실무교육,오엔제이프로그래밍실무교육센터)Spring IoC BeanFactory 예제

Spring IoC BeanFactory 예제


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷  실무전문 강의)



- 스프링의 의존성 주입의 핵심 인터페이스
- Bean의 생성과 소멸 담당(의존성과 생명주기 및 관리 담당)
- 객체를 관리하는 고급 설정 기법 제공
-       DI 지원 기능만 필요하다면 BeanFactory 인터페이스를 이용해 스프링 DI 컨테이너와 직접 연동할 수 있다. 이 경우 애플리케이션은 BeanFactory 인터페이스를 구현한 클래스의 인터페이스를 생성하고 이 인스턴스에 빈과 의존성 설정 정보를 저장해야 한다.
-       BeanFactory를 프로그래밍적으로 설정할 수도 있지만 대부분 설정 파일을 통해 외부에서 설정하는 방식을 사용한다.
-       스프링에서 기본적으로 제공하는 두개의 메인 BeanFactory BeanDefinitionRegistry를 구현하고 있다.
-       PropertiesBeanDefinitionReader는 프로퍼티 파일에서 Bean정의를 읽고 XmlBeanDefinition Reader XML 파일에서 Bean정의를 읽는다.


1.     이클립스, STS, Maven 설치는 이전 강좌 참고 하세요.
2.     이클립스에서 New -> Project- -> Spring Templete Project -> Simple Spring Utility Project 선택, 프로젝트 이름 springapp라고 주고 top level package onj.mall.app 라고 하자.
3.     소스코드 작성


[CarMaker 인터페이스 작성]
package onj.mall.app;

public interface CarMaker {
       public Car sell(Money money);
}



[Money 클래스 작성]
package onj.mall.app;

public class Money {
       private int amount;
         public Money() {}

       public Money(int amt) {
             this.amount = amt;
       }

       public int getAmount() {
             return this.amount;
       }

       public void setAmount(int amt) {
             this.amount = amt;
       }
}



[Car 클래스 작성]
package onj.mall.app;

public class Car {
       private String name;
         public Car(String name) {
            this.name = name;
         }
         public String getName() {
            return this.name;
         }
         public void setName(String name) {
            this.name  = name;
         }
}



[Audi 클래스 작성]
-       CarMaker 인터페이스 구현체
-       BeanFactoryExam에서 주입 받는다.
-        

package onj.mall.app;

public class Audi implements CarMaker{
       public Car sell(Money money) {
                 money.setAmount(1000);
                 Car car = new Car("Audi A6");
                 return car;
               }
}


[BeanFactoryExam 파일]
package onj.mall.app;

import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.FileSystemResource;


public class BeanFactoryExam {
           public static void main(String[] args) {
                     DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
                     XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
                     reader.loadBeanDefinitions(new FileSystemResource("src/main/resources/xmlBeanFactory.xml"));
                    
                     CarMaker carMaker = factory.getBean("audi", Audi.class);
                     Money money = factory.getBean("money", Money.class);
                     money.setAmount(1000);
                     Car c = carMaker.sell(money);
                     System.out.println("I sold a car... " + c.getName());
           }
}


[빈 정의 XML 파일, /src/main/resources/xmlBeanFactory.xml]

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

       <bean id="audi" class="onj.mall.app.Audi"/>
       <bean id="money" class="onj.mall.app.Money"/>
</beans>


[결과]
I sold a car... Audi A6

댓글 없음:

댓글 쓰기