gpt4 book ai didi

java - 使用 Spring IOC (DI) 解决 "Robot legs"p‌r‌o‌b‌l‌e‌m

转载 作者:行者123 更新时间:2023-11-29 05:51:19 29 4
gpt4 key购买 nike

使用 Guice,可以执行以下操作:

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

如何在不使用 XML 配置的情况下使用 JSR-330(可选)注释和 JavaConfig 在 Spring 3.x(3.1.x 或 3.2)中实现相同的功能?

最佳答案

接口(interface)腿{}

_

 @Component
class LeftLeg implements Leg {
public String toString() {
return "LeftLeg";
}
}

_

@Component
class RightLeg implements Leg {
public String toString() {
return "RightLeg";
}
}

_

class Robot {
@Autowired
Leg leftLeg_;
@Autowired
Leg rightLeg_;



public String toString() {
return "leftLeg_=" + leftLeg_ + ", rightLeg_=" + rightLeg_;
}
}

_

@RunWith(SpringJUnit4ClassRunner.class)
class RobotTest {
@Autowired
Robot r;
@Test
public void t1() throws Exception {
System.out.println(r);
}
}

关于java - 使用 Spring IOC (DI) 解决 "Robot legs"p‌r‌o‌b‌l‌e‌m,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13756979/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com