[인강정리] 04. DI 애플리케이션 작성(1)

[인강정리] 04. DI 애플리케이션 작성(1)

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 패키지 하위)

여기까지 하고 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); //싱글톤 생성인지 확인해봄 } }

콘솔 결과창

from http://purewater-practice-diary.tistory.com/58 by ccl(A) rewrite - 2021-12-24 17:01:40