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();
}
}