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~~
//안녕하세요
이와같이 사용할 수 있습니다.