使用吉斯,可以做到以下幾點:解決 「機器人腿」 問題與Spring IOC(DI)
interface Leg {}
_
class LeftLeg implements Leg {
public String toString() {
return "LeftLeg";
}
}
_
class RightLeg implements Leg {
public String toString() {
return "RightLeg";
}
}
_
class Robot {
final Leg leftLeg_;
final Leg rightLeg_;
@Inject
Robot(@Named("left") Leg leftLeg, @Named("right") Leg rightLeg) {
leftLeg_ = leftLeg;
rightLeg_ = rightLeg;
}
public String toString() {
return "leftLeg_=" + leftLeg_ + ", rightLeg_=" + rightLeg_;
}
}
_
class RobotTest {
@Test
public void t1() throws Exception {
Injector inj = Guice.createInjector(new AnGuiceModule());
Robot r = inj.getInstance(Robot.class);
assertEquals(r.toString(), "leftLeg_=LeftLeg, rightLeg_=RightLeg");
}
}
_
class AnGuiceModule extends AbstractModule {
protected void configure() {
bind(Leg.class).annotatedWith(Names.named("left")).to(LeftLeg.class);
bind(Leg.class).annotatedWith(Names.named("right")).to(RightLeg.class);
}
}
我如何使用JSR-330(選購)註釋和JavaConfig不使用實現與Spring 3.X(3.1.X或3.2)同樣的事情XML配置?
這是廢話,春天真的沒有更好的解決方案嗎?來自2006年的這個線程展示了一個有趣的FactoryBean方法http://forum.spring.io/forum/spring-projects/container/13533-exporting-child-applicationcontext-beans-to-the-parent-applicationcontext –