[Magictian.java]
package magic;
public class Magician {
public Magician() {}
public void magic() {
System.out.println("마술을 시작합니다.");
System.out.println("마술상자에는 무엇이 있을까요?");
System.out.println(" 짜잔 --> " + magicBox.getContents()); //마술상자안의 내용물 확인
}
//마술상자를 주입
private MagicBox magicBox;
public void setMagicBox(MagicBox magicBox) {
this.magicBox = magicBox;
}
private String magicWords;
public void setMagicWords(String magicWords) {
this.magicWords = magicWords;
}
}
public class Magician {
public Magician() {}
public void magic() {
System.out.println("마술을 시작합니다.");
System.out.println("마술상자에는 무엇이 있을까요?");
System.out.println(" 짜잔 --> " + magicBox.getContents()); //마술상자안의 내용물 확인
}
//마술상자를 주입
private MagicBox magicBox;
public void setMagicBox(MagicBox magicBox) {
this.magicBox = magicBox;
}
private String magicWords;
public void setMagicWords(String magicWords) {
this.magicWords = magicWords;
}
}
[MagicBox.java]
package magic;
package magic;
public interface MagicBox {
public String getContents();
}
public String getContents();
}
[MagicBoxImpl.java]
package magic;
public class MagicBoxImpl implements MagicBox{
public MagicBoxImpl() {}
public String getContents() {
return "아름다운 아가씨"; //최초 마술상자에는 아름다운 아가씨가 있다.
}
}
public MagicBoxImpl() {}
public String getContents() {
return "아름다운 아가씨"; //최초 마술상자에는 아름다운 아가씨가 있다.
}
}
[Tiger.java]
//spring xml파일(magic.xml)에서 메소드 대체되는 Tiger객체.
//MethodReplacer의 reimplement 메소드를 재정의하면 된다.
//spring xml파일(magic.xml)에서 메소드 대체되는 Tiger객체.
//MethodReplacer의 reimplement 메소드를 재정의하면 된다.
package magic;
import java.lang.reflect.Method;
import org.springframework.beans.factory.support.MethodReplacer;
import org.springframework.beans.factory.support.MethodReplacer;
public class Tiger implements MethodReplacer {
public Object reimplement(Object target, Method method, Object[] args) throws Throwable {
return "난 호랑이다 어흥~!!";
}
}
public Object reimplement(Object target, Method method, Object[] args) throws Throwable {
return "난 호랑이다 어흥~!!";
}
}
[MagicTest.java]
package magic;
package magic;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MagicTest {
public static void main(String[] args) throws Exception{
ApplicationContext ctx = new ClassPathXmlApplicationContext("magic.xml");
public static void main(String[] args) throws Exception{
ApplicationContext ctx = new ClassPathXmlApplicationContext("magic.xml");
Magician magician = (Magician) ctx.getBean("magician");
magician.magic();
}
}
magician.magic();
}
}
[magic.xml]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="magician" class="magic.Magician">
<property name="magicBox" ref="magicBox" />
<property name="magicWords" value="수리수리마수리!!!" />
</bean>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="magician" class="magic.Magician">
<property name="magicBox" ref="magicBox" />
<property name="magicWords" value="수리수리마수리!!!" />
</bean>
<bean id="magicBox" class="magic.MagicBoxImpl">
<replaced-method name="getContents" replacer="tiger" />
</bean>
<bean id="tiger" class="magic.Tiger" />
</beans>
<replaced-method name="getContents" replacer="tiger" />
</bean>
<bean id="tiger" class="magic.Tiger" />
</beans>
댓글 없음:
댓글 쓰기