Utilisation Guice, on peut effectuer les opérations suivantes:Résolution "jambes de robot" problème avec ressort du CIO (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);
}
}
Comment puis-je obtenir la même chose avec 3.x Spring (3.1.x ou 3.2) à l'aide JSR-330 (en option) et annotations JavaConfig sans utiliser Configuration XML?
C'est la merde est-il vraiment pas de meilleure solution au printemps? Ce sujet de 2006 présente une approche intéressante de FactoryBean http://forum.spring.io/forum/spring-projects/container/13533-exporting-child-applicationcontext-beans-to-the-parent-applicationcontext –