A.java
@Controller
@RequestMapping(value = "/a")
public class A {
@Resource(name = "foo")
private Foo foo;
}
B.java
@Controller
@RequestMapping(value = "/b")
public class B {
@Resource(name = "foo")
private Foo foo;
}
x-spring.xml
<alias name="foo1" alias="foo"/>
<bean id="foo1" class="com.example.Foo1" scope="tenant">
y-spring.xml
<alias name="Foo2" alias="foo"/>
<bean id="foo2" class="com.example.Foo2" scope="tenant">
Foo1 源自 Foo2。使用Hybris的项目,范围是租户(由Hybris定义)。
如上所述,我将 "foo" 注入(inject)到 A 类 和 B 类 以及 x-spring.xml、y-spring.xml一一加载。但我发现注入(inject)的bean是不同的,它是A类中的Foo1,而B类中是Foo2,我想知道为什么它们不同,以及如何将它们与 Foo1 对齐。
最佳答案
我的猜测是 x-spring.xml 和 y-spring.xml 位于两个不同的上下文中,很可能是来自两个不同扩展的两个独立的 Web 上下文。
如果您希望它们在两个上下文中都可访问,请在核心应用程序上下文中声明一次 bean。
租户范围已弃用,请使用 spring 上下文或 yrequest
关于java - 为什么我注入(inject)相同的bean,但实际上注入(inject)了不同的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43890137/