[Spring] HelloWorld 애플리케이션 만들기 (2)

extory1004·2022년 2월 12일

앞서 만들었던 애플리케이션을 스프링 프레임워크를 이용해 리팩터링하여 스프링이 직접 MessageRenderer에 MessageProvider를 제공하도록 해봅시다.

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloWorldSpringDI {
	public static void main(String[] args) {
    	ApplicationContext ctx = new ClassPathXmlApplicationContext("spring/app-context.xml");
        MessageRenderer mr = ctx.getBean("renderer", MessageRenderer.class);
        mr.render();
    }
}

ApplicationContext 타입인 ClassPathXmlApplicationContext 인스턴스를 생성한 뒤 getBean() 메서드를 이용해 xml파일을 읽어 MessageRenderer 인스턴스를 가져옵니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:p="http://www.springframework.org.schema/p"
      xsi:schemaLocation="http://www.springframework.org/schema/beans 
                          http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="provider"
      class="com.example.Spring.HelloWorldMessageProvider"/>

<bean id="renderer"
      class="com.example.Spring.StandardOutMessageRenderer"
      p:messageProvider-ref="provider"/>

</beans>

위 xml파일을 보면 두 개의 자바빈이 있습니다. id가 renderer인 부분을 보면 p 애트리뷰트를 이용해 provider 빈을 messageProvider에 주입하는 것을 볼 수 있습니다. 프로그램을 실행하면 스프링이 app-context.xml을 읽어서 provider 빈과 renderer 빈을 생성하고, renderer 빈을 생성할 때 provider 빈을 messageProvider 매개변수에 주입해줍니다.그리고 render() 메서드가 실행되고 결과로 HelloWorld!가 콘솔에 출력됩니다.

profile
코딩하는 대학생

0개의 댓글