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-27 | 2810 | ||
[채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2043 | ||
53 | [평일100%환급7건]웹퍼블리싱,자바&JSP,안드로이드,C#닷넷,SQL기… | 03-15 | 1867 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 2024 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 2988 | |
50 | [주말주간]자바&웹,jQUERY,스프링프레임워크,마이바티스 | 01-31 | 1560 | |
49 | [평일주간/야간,주말주간/야간]Spring,MyBatis,Hibernate개발자… | 01-19 | 1882 | |
48 | [평일주간/야간,주말주간/야간]안드로이드개발자과정(Adnroid 교… | 01-11 | 1756 | |
47 | [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… | 01-03 | 2332 | |
46 | [100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드… | 12-27 | 2810 | |
45 | [주말야간]개발자를위한PLSQL,SQL튜닝,힌트(토/일) | 12-19 | 1969 | |
44 | [평일주간/야간,주말주간/야간]웹퍼블리싱 마스터(HTML5,CSS3,jQ… | 12-14 | 1949 | |
43 | [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2043 | |
42 | [주말야간]JAVA,JSP,Spring,PLSQL,힌트,웹퍼블리싱,안드로이드,… | 12-09 | 1589 | |
41 | [평일야간,주말야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1813 | |
40 | [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… | 12-01 | 2039 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1465 |
댓글 없음:
댓글 쓰기