1. POJO 클래스 작성
Hello.java
package myspring.di.xml;
public class Hello {
String name;
Printer printer;
public Hello() {}
public void setName(String name) {
this.name = name;
}
public void setPrinter(Printer printer) {
this.printer = printer;
}
public String sayHello() {
return "Hello " + name;
}
public void print() {
this.printer.print(sayHello());
}
}
Printer.java 인터페이스
package myspring.di.xml;
public interface Printer {
public void print(String message);
}
StringPrinter 클래스
package myspring.di.xml;
public class StringPrinter implements Printer{
private StringBuffer buffer = new StringBuffer();
@Override
public void print(String message) {
buffer.append(message);
}
public String toString() {
return buffer.toString();
}
}
ConsolePrinter.java 클래스
package myspring.di.xml;
public class ConsolePrinter implements Printer {
@Override
public void print(String message) {
System.out.println(message);
}
}
beans.xml 빈 설정 파일 작성 (config 패키지 하위)
<?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 https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="hello" class="myspring.di.xml.Hello">
<property name="name" value="Spring" />
<property name="printer" ref="printer" />
</bean>
<bean id="printer" class="myspring.di.xml.StringPrinter" />
<bean id="consolePrinter" class="myspring.di.xml.ConsolePrinter" />
</beans>
여기까지 하고 beans.xml에서 Beans Graph를 열어보면
이런식으로 의존 관계가 설정되어 있는 것을 알 수 있다.
테스트 클래스 작성
HelloBeanTest.java
package spring.di;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import jdk.internal.org.objectweb.asm.util.Printer;
public class HelloBeanTest {
public static void main(String[] args) {
//1. IoC 컨테이너 생성
ApplicationContext ctx = new GenericXmlApplicationContext("config/beans.xml");
//2. Hello Bean 가져오기
Hello hello = (Hello) ctx.getBean("hello"); //캐스팅 하는 방법
System.out.println(hello.sayHello());
hello.print();
//3. StringPrinter Bean 가져오기
Printer printer = (Printer) ctx.getBean("printer");
System.out.println(printer.toString());
//4. 싱글톤 방식으로 객체가 생성되었는지 확인
Hello hello2 = ctx.getBean("hello", Hello.class); //클래스 타입을 지정해주는 방법
hello.print();
System.out.println(hello == hello2); //싱글톤 생성인지 확인해봄
}
}
'국기훈련과정 > Spring' 카테고리의 다른 글
[인강정리] 06. DI 애플리케이션 작성(3) - Bean 의존성 주입 방법 (0) | 2021.12.24 |
---|---|
[인강정리] 05. DI 애플리케이션 작성(2) - jUnit (0) | 2021.12.24 |
[인강정리] 03. IoC 컨테이너와 DI (0) | 2021.12.24 |
[인강정리] 02. Spring 시작하기 (0) | 2021.12.24 |
[인강정리] 01. Spring Framework 개요 (0) | 2021.12.24 |