본문 바로가기

Spring

자바 다형성 사용하기, 스프링프레임워크 사용하기

 

 

 

인터넷 강의를 듣고 공부한 내용을 포스팅합니다.

'윤재성의 스프링 프레임워크 개발자를 위한 실습을 통한 입문 과정' 이란 강의를 듣고 있습니다.

 

다형성(polymorphism)

다형성은 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미합니다. 

자바에서 모든 객체는 부모클래스형 참조변수나 구현한 인터페이스 변수에 담을 수 있습니다.

 

public interface HelloWorld {
	public void sayHello();
}

이렇게 인터페이스를 하나 만들고

public class HelloWorldKo implements HelloWorld{
	@Override
	public void sayHello() {
		System.out.println("안녕하세요");
	}
}
public class HelloWorldEn implements HelloWorld{
	@Override
	public void sayHello() {
		System.out.println("hi~~~~");
	}
}

위의 인터페이스를 참조한 클래스를 만들어주고

import kr.co.softcampus.beans.HelloWorld;
import kr.co.softcampus.beans.HelloWorldEn;
import kr.co.softcampus.beans.HelloWorldKo;

public class MainClass {

	public static void main(String[] args) {
		
		HelloWorld hello1 = new HelloWorldKo();
		callMethod(hello1);
		
		HelloWorld hello2 = new HelloWorldEn();
		callMethod(hello2);
	}
	
	public static void callMethod(HelloWorld hello) {//출력
		hello.sayHello();
	}

}

//결과
//안녕하세요
//hi~~~~

인터페이스 변수를 선언한 뒤에 인터페이스를 참조한 클래스들의 객체를 넣어줄 수 있습니다.

 

스프링프레임워크 사용

이번엔 스프링프레임워크를 사용하여 같은 동작을 해보겠습니다.

 

인터페이스와 인터페이스를 참조한 클래스들은 위와 동일합니다.

xml을 통해서 객체를 생성하는 것을 해보겠습니다.

<?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='hello1' class='kr.co.softcampus.beans.HelloWorldEn'/>
	<bean id='hello2' class='kr.co.softcampus.beans.HelloWorldKo'/>		
</beans>

bean객체에 이름을 정해주기 위해 id를 통해 이름을 정해주고

public class MainClass {

	public static void main(String[] args) {
    
		//beans.xml파일을 로딩한다.
		ClassPathXmlApplicationContext ctx = 
				new ClassPathXmlApplicationContext("kr/co/softcampus/config/beans.xml");
		
		//xml에 정의한 bean 객체의 주소값을 가져온다.
		HelloWorld hello1 = (HelloWorld) ctx.getBean("hello1");
		callMethod(hello1);
		
		HelloWorld hello2 = ctx.getBean("hello2",HelloWorld.class);
		callMethod(hello2);
		
		ctx.close();
	}
	
	public static void callMethod(HelloWorld hello) {
		hello.sayHello();
	}
}

//결과
//Hi~~
//안녕하세요

이와같이 사용할 수 있습니다.