【问题标题】:Why I inject the same bean, but injected different class actually?为什么我注入同一个bean,但实际上注入了不同的类?
【发布时间】:2017-05-10 10:42:08
【问题描述】:

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"注入到A类B类,以及x-spring.xml, y-spring.xml 一一加载。但是我发现注入的bean不一样,是Class A中的Foo1,和Class B中的Foo2,我想知道为什么它们不同,以及如何将它们与 Foo1 对齐。

【问题讨论】:

  • 别名被替换了吗?

标签: java spring spring-mvc dependency-injection hybris


【解决方案1】:

我的猜测是 x-spring.xml 和 y-spring.xml 位于两个不同的上下文中,很可能是来自两个不同扩展的两个独立的 Web 上下文。

如果您希望它们在两种上下文中都可访问,请在核心应用程序上下文中声明一次 bean。

不推荐使用租户范围,使用 spring 上下文或 yrequest

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2011-06-25
    • 1970-01-01
    • 2020-04-09
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多