IoC 실습
1. example 패키지에서 작성
2. 사용 클래스: PrintUse, 구현 클래스: Print 인터페이스
3. 프린터 출력(PrinterPrint)과 콘솔출력(ConsolePrint)을 자식 클래스로 구현한 후 사용 클래스에서 이들을 사용할 수 있도록 구현한다.
4. 스프링 설정파일 : "config/beanfactory.xml"파일로 지정
1. 인터페이스 Print
package example;
public interface Print {
public void print(String text);
}
<?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="cprint" name="p1, p2, p3" class="example.ConsolePrint"></bean>
<!-- p1, p2, p3... 2개 이상의 name을 별칭으로 지정해줄 수 있다. -->
<bean id="cprint2" class="example.PrinterPrint"></bean>
</beans>
5. 실행하는 PrintUse 클래스
package example;
import java.util.Scanner;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
public class PrintUse {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
System.out.println("입력값 입력:");
String text = scan.next();
Resource res = new FileSystemResource("config/beanfactory.xml"); // xml을 프로젝트 바로 밑에 넣는 경우
// Resource res = new ClassPathResource("config/beanfactory.xml");
// STS 왼쪽 src/main/resources 밑에 config 폴더 만들어 xml 파일 넣는 경우
BeanFactory factory = new XmlBeanFactory(res); // XmlBeanFactory는 실행 가능하지만 호환문제로 가운데줄 표시됨
// 위의 2개 클래스는 3.2 이후 버전에서는
AbstractApplicationContext context = new ClassPathXmlApplicationContext("beanfactory.xml");
이런 형식으로 한 개의 클래스로 통합되었다.
Print bean = factory.getBean("cprint", Print.class); // 기본 방식으로 선언하는 경우
Print bean = (Print) factory.getBean("cprint"); // 타입 캐스트 방식으로 선언하는 경우
bean.print(text);
Print bean2 = factory.getBean("p1", Print.class); // name으로 호출한 경우
bean.print(text);
}
}
xml 파일을 src/main/resources에 넣은 경우. (ClassPathResource로 호출)
6. 실행 결과
입력값 입력:
금요일이다
3월 25, 2016 9:12:09 오전 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
정보: Loading XML bean definitions from file [C:\workspaces\spring_sts\chap01_IoC\config\beanfactory.xml]
입력받은 출력값:금요일이다
' Spring Framework' 카테고리의 다른 글
스키마 p(namespaces)를 이용한 값 전달 (0) | 2016.03.28 |
---|---|
설정파일에서 객체를 전달하는 방법: 생성자 방식, setter 메서드 방식 (0) | 2016.03.25 |
Dependency Injection (의존성 주입) (0) | 2016.03.24 |
STS에서 메이븐 방식으로 스프링 프로젝트 생성 (0) | 2016.03.24 |
Spring Tool Suite (0) | 2016.03.24 |