2014년 12월 11일 목요일

[spring framework3.2 강좌]Spring IoC(BeanFactory)[JAVA/JSP/Spring/JDBC/자바프레임워크/스프링기초실무학원/전액무료교육]

Spring IoC BeanFactory를 이용한 간단한 예제 입니다. 참고하세요...

BeanFactory

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



Spring IoC BeanFactory 예제

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


 [100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드…오라클자바…12-272810
 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육…오라클자바…12-112043
53 [평일100%환급7건]웹퍼블리싱,자바&JSP,안드로이드,C#닷넷,SQL기… 오라클자바…03-151867
52 [주말]C#,ASP.NET마스터 오라클자바…01-312024
51 [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… 오라클자바…01-312988
50 [주말주간]자바&웹,jQUERY,스프링프레임워크,마이바티스 오라클자바…01-311560
49 [평일주간/야간,주말주간/야간]Spring,MyBatis,Hibernate개발자… 오라클자바…01-191882
48 [평일주간/야간,주말주간/야간]안드로이드개발자과정(Adnroid 교… 오라클자바…01-111756
47 [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… 오라클자바…01-032332
46 [100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드… 오라클자바…12-272810
45 [주말야간]개발자를위한PLSQL,SQL튜닝,힌트(토/일) 오라클자바…12-191969
44 [평일주간/야간,주말주간/야간]웹퍼블리싱 마스터(HTML5,CSS3,jQ… 오라클자바…12-141949
43 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… 오라클자바…12-112043
42 [주말야간]JAVA,JSP,Spring,PLSQL,힌트,웹퍼블리싱,안드로이드,… 오라클자바…12-091589
41 [평일야간,주말야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011813
40 [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… 오라클자바…12-012039
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011465

댓글 없음:

댓글 쓰기