기존 메소드를 런 타임중에 spring Context로 부터 특정한 빈을 반환하는 새로운 구현으로 대체. Method 주입의 특별한 경우로 Method가 특정 타입의 빈을 반환하도록 선언해 두고(보통 abstract) 런타임 중 실제 반환되는 빈은 Spring Context에서 오도록 하는 방법
아래 예제를 참조하세요~~
[Emp.java]
package emp;
public abstract class Emp {
public Emp() {}
public void work() {
getEmp().work(); //주입된 getEmp() 메소드를 사용
}
//getEmp를 주입, Emp가 주입된다.
//Run-Time중에 xml 파일로 부터 빈을 주입받는다.
public abstract Emp getEmp() ;
}
[Programmer.java]
package emp;
public class Programmer extends Emp{
public Emp getEmp() {
return this;
}
public void work() {
System.out.println("프로그래머가 개발을 합니다.");
}
}
[Designer.java]
package emp;
public class Designer extends Emp{
public Emp getEmp() {
return this;
}
public void work() {
System.out.println("디자이너가 개발을 합니다.");
}
}
[WEB-INF/src/emp.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="myemp" class="emp.Programmer" />