package com.lgy.spring5_2;

public interface Pencil {
//	메소드 정의
	public void use();
}
package com.lgy.spring5_2;

public class Pencil4B implements Pencil{
	
	@Override
	public void use() {
		System.out.println("4B입니다.");
	}
	
}
package com.lgy.spring5_2;

public class Pencil6B  implements Pencil{
	@Override
	public void use() {
		System.out.println("6B입니다.");
	}
}
package com.lgy.spring5_2;

public class Pencil6BWithEraser implements Pencil {
	@Override
	public void use() {
		System.out.println("6B이고, 지우개가 있습니다.");
	}
}
<?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="pencil1" class="com.lgy.spring5_2.Pencil4B"></bean>
	<bean id="pencil2" class="com.lgy.spring5_2.Pencil6B"></bean>
	<bean id="pencil3" class="com.lgy.spring5_2.Pencil6BWithEraser"></bean>

</beans>
package com.lgy.spring5_2;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {
	public static void main(String[] args) {
		AbstractApplicationContext ctx =new GenericXmlApplicationContext("classpath:applicationCTX.xml");		
//		Pencil4B pencil1 =ctx.getBean("pencil1",Pencil4B.class);
//		pencil1.use();
//		Pencil6B pencil2 =ctx.getBean("pencil2",Pencil6B.class);
//		pencil2.use();
//		Pencil6BWithEraser pencil3 =ctx.getBean("pencil3",Pencil6BWithEraser.class);
//		pencil3.use();
		
//		인터페이스로 변경, 오버라이딩 가능
		Pencil pencil1 =ctx.getBean("pencil1",Pencil.class);
		pencil1.use();
		Pencil pencil2 =ctx.getBean("pencil2",Pencil.class);
		pencil2.use();
		Pencil pencil3 =ctx.getBean("pencil3",Pencil.class);
		pencil3.use();
		
	}
}