【发布时间】:2011-11-25 11:37:21
【问题描述】:
我正在创建一个包含两个请求范围 bean 的类。 bean 类使用以下注释:
@Component
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class RequestScopedBean1 {
// stuff
}
他们在我的班级中作为字段的声明是:
@Resource
private RequestScopedBean1 requestScopedBean1
@Resource
private RequestScopedBean2 requestScopedBean2
这个系统已经在我正在处理的所有代码库中使用,没有任何问题。但是,在我的课堂上,其中一个注入的 bean(不是两个,只有一个!)的所有字段都为空/空。
我知道,简单地在调试模式下查看请求范围 bean 的字段通常会显示它们都是空的,因为 Spring 是如何使用代理管理此类 bean 的。我也知道,出于同样的原因,应该使用 getter 和 setter 访问字段,而不是直接访问。但是,在 intelliJ 中使用 Evaluate Expression 函数时,此 bean 仍然显示为 null/空。
我的班级和每个 bean 班级都在不同的项目中。工作 bean 在核心项目中。损坏的bean在一个依赖核心项目的项目中,而我的类在一个依赖于损坏bean的项目的项目中。
如果您需要更多信息来帮助我,请告诉我!
编辑我的 XML 配置文件的简要说明:
有 4 个相关项目,我们称它们为“核心”、“网络”、“通用”和“特定”。每个都有自己对应的 application-context.xml 该应用程序是从“特定”项目构建的 .war 文件部署的。在“特定”web.xml 的标签中,“网络”和“特定”的应用程序上下文被导入。 “特定”application-context.xml 的第一行导入“common”的应用程序上下文,这是我的新类所在的位置。 'web' application-context.xml 的第一行导入'core' application-context。工作请求范围的 bean 驻留在“核心”中; “网络”中的破碎者。我希望这很清楚 - 如果没有,请告诉我!还有其他信息有用吗?
【问题讨论】:
-
您能否发布您的 web.xml 和 spring 上下文 xml(s) 以及不同 bean 的包名称。我想知道的是,如果您正在设置不同的应用程序上下文,并且您的非工作 bean 是在不支持 Web 的上下文中创建的(在这种情况下,请求范围将不起作用)。
-
我不认为这是相关的,但你不做重定向或类似的事情而不是转发吗?
-
我不能发布它们,但我会尽力描述它们:
标签: java spring dependency-injection