gpt4 book ai didi

java - Spring & 没有独特的 bean 类型

转载 作者:行者123 更新时间:2023-12-02 06:24:21 25 4
gpt4 key购买 nike

我有以下用于基于 Spring 的单元测试的 Bean:

abstract class A {
// some injections using @Value
}

class B extends A {
// some injections using @Autowired, @Qualifier, @PersistenceUnit and @Value
}

class C extends A {
// some injections using @Autowired, @Qualifier, @PersistenceUnit and @Value
}

class Foo{

@Autowired
private A a;

...
}

class BarTest{

@Autowired
private B b;

@Autowired
private C c;

@Autowired // Expected: fooB.a = b
private Foo fooB;

@Autowired // Expected: fooC.a = c
private Foo fooC;

...
}

在 BarTest 类中:是否可以控制注入(inject)到 Foo 的 2 个实例中的内容?

或者我是否存在设计问题,我应该以不同的方式进行设置?

最佳答案

您可以通过限定符控制注入(inject)的内容。

但在这种情况下,您的 Foo 类将不是单例。因此,很可能您必须通过 XML 实例化(至少 - 根据您的需要)两个 Foo 对象。

像这样:

<beans ... >
<bean id="b" class="your.pack.B" >
<bean id="c" class="your.pack.C" >
<bean id="fooB" class="your.pack.Foo" >
<property name="a" ref="b" />
</bean>
<bean id="fooC" class="your.pack.Foo" >
<property name="a" ref="c" />
</bean>

...
</beans>

-

@Autowired // Expected: fooB.a = b
@Qualifier("fooB")
private Foo fooB;

@Autowired // Expected: fooB.a = c
@Qualifier("fooC")
private Foo fooC;

(并去掉 Foo 类中的 @Autowired 注解)

关于java - Spring & 没有独特的 bean 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20704056/

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