2013년 7월 27일 토요일

(오라클자바개발자실무교육,오엔제이프로그래밍실무교육센터)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>
[결과]

댓글 없음:

댓글 쓰기