java - 为什么我注入(inject)相同的bean,但实际上注入(inject)了不同的类?

标签 java spring spring-mvc dependency-injection sap-commerce-cloud

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.xmly-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/

相关文章:

java - 如何将 jar 转换为 rsyncable jar?

java - 如何使用 ERA 将英文日期格式化为日文

java - 如何从 spring boot thymeleaf 获取输入值到java类?

java - 如何在 Spring 3 中使用 Velocity Tools 获取 VelocityEngine

forms - Spring MVC 表单操作 POST 方法不重定向

java - 插件 org.springframework.boot :spring-boot-maven-plugin:1. 3.0.BUILD-SNAPSHOT 或其依赖项之一无法解析

java - 为什么我的示例中需要具有相同名称的 bean?为什么当我将 bean 文件的值更改为 bean 配置文件时,它永远不会返回我的输出?

java - Xquery 正在返回一组元素的结果而不是其他元素?

java - 在 Spring 3/Spring Security 2.0.5 中检测 session 超时

java - 错误 : java. util.concurrent.ExecutionException : com. android.builder.internal.aapt.v2.Aapt2Exception: 在 Windows 10 上编译时出现 AAPT2 错误