본문 바로가기

SpringFrameWork

2. Hello World, IOC

이 포스팅은 아래 링크를 참고하여 작성되었습니다.

http://www.tutorialspoint.com/spring/spring_hello_world_example.htm

상세한 내용이 궁금하시면 해당 링크로 들어가 보시기 바랍니다.



HelloWorldIOC.zip


- IOC : Inversion of Control, 제어의 역전 등으로 번역

참고 : http://javajigi.net/pages/viewpage.action?pageId=3664


개발자들은 원하는 객체의 인스턴스를 자유롭게 생성해서 이용해 왔습니다.

그러나, EJB등의 프레임워크가 도입되면서, EJB 같은 객체의 인스턴스 생성에 제약을 주는 프레임워크를 이용할 경우에는 각 인스턴스의 생명주기가 각각의 프레임워크에서 제시한 방법에 따라 관리되게 됩니다. (EJB 의 경우에는 EJB Container)

그러나 EJB는 너무 무거웠고, Spring에서는 더 가벼운 방식으로 이를 지원합니다.


- Depenency lookup 또는 Dependency Pull

IOC의 하위개념으로, 저장소에 있는 bean에 접근하기 위해 컨테이너에서 제공하는 API를 이용하여 bean을 찾아 인스턴스를 생성하는 개념.


- DI (Dependenct Injection)

bean 설정 정보를 바탕으로 컨테이너가 자동적으로 의존관계를 연결시켜 주는 방식.


오늘은 지난번에 만든 예제를 이용하여 Spring에서 제공해 주는 API를 이용해 인스턴스를 생성해 보겠습니다.

이런 방식이 어떤 장점을 가지고 있는지는 차차 써가기로 하고, 오늘은 인스턴스 생성 API부터 알아봅니다.


MainApp.java

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class MainApp {

	public static void main(String[] args) {

		// ApplicationContext context = new
		// ClassPathXmlApplicationContext("beans.xml");
		//
		// HelloWorld obj = (HelloWorld) context.getBean("helloWorldId");
		// obj.getMessage();
		//
		// ((ClassPathXmlApplicationContext)context).close();

		XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));

		HelloWorld obj = (HelloWorld) factory.getBean("helloWorldId");
		obj.getMessage();

	}

}


XmlBeanFactory를 이용하여 새로운 객체를 생성합니다. 이 API는 beans.xml 에 설정되어 있는 각 객체의 정보를 읽어들여, 이용자가 getBean()을 통해 인스턴스 생성을 요청하면, beans.xml의 초기값으로 세팅하여 인스턴스를 생성하여 반환해 줍니다. ApplicationContext가 없이 객체를 생성했다는 점에 주목하시기 바랍니다. 





	
		
	

이것을 실행하면 아래와 같은 결과가 나옵니다.



'SpringFrameWork' 카테고리의 다른 글

4. Gradle로 자바 빌드하기  (0) 2014.02.26
3. 가상서버에서 테스트  (0) 2014.02.26
1. Hello World Example  (0) 2014.02.05