Spring

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

Vouloir 2021. 7. 13. 18:00

 

 

 

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

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

 

다형성(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~~
//안녕하세요

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