gpt4 book ai didi

java - 当依赖类存在多个 bean 时如何 Autowiring ?

转载 作者:行者123 更新时间:2023-12-01 17:50:34 26 4
gpt4 key购买 nike

A类

class ClassA {
@Autowired
class ClassB;

}

类配置:

    @Configuration
class TestConfig {
@Bean(name = "instance1")
public ClassB instance1() {
return new ClassB();
}

@Bean(name = "instance2")
public ClassB instance2() {
return new ClassB();
}
}

类测试:

    @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfig.class)
class Test {
@Autowired
ClassA obj1; // how to initialise it with instance1

@Autowired
ClassA obj2; //// how to initialise it with instance2
}

如何在测试类中用instance1实例化obj1,用instance2实例化obj2?

最佳答案

一种可能的解决方案。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfig.class)
class Test {

@Autowired
@Qualifier("instance1")
ClassB obj1;

@Autowired
@Qualifier("instance2")
ClassB obj2; // You can also rename obj2 as instance2 and remove @Qualifier
}

使用new创建ClassA的实例,并在ClassA中使用构造函数注入(inject)而不是字段注入(inject)(@Autowired)

class ClassA {
ClassB classB;

@Autowired
public ClassA(ClassB classB){
this.classB = classB;
}
}

如果您无法更改 A 类,则创建两个 TestConfig 类。一次使用 obj1,一次使用 obj2。并根据您的测试用例进行相应使用

关于java - 当依赖类存在多个 bean 时如何 Autowiring ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50640498/

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