Spring请求范围的bean - 所有字段为null / empty

时间:2011-11-25 11:37:21

标签: java spring dependency-injection

我正在创建一个包含两个请求范围的bean的类。 bean类注释为:

@Component
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class RequestScopedBean1 {
  // stuff
}

他们在我班上的宣言是:

@Resource
private RequestScopedBean1 requestScopedBean1

@Resource
private RequestScopedBean2 requestScopedBean2

这个系统已经在我正在处理的代码库中使用,没有任何问题。但是,在我的课程中,其中一个注入的bean(不是两个,只有一个!)的所有字段都为null / empty。

我知道只是在调试模式下查看请求范围的bean的字段通常会显示它们都是null,因为Spring使用代理管理这样的bean。我也知道,出于同样的原因,应该使用getter和setter访问字段,而不是直接访问。但是,在intelliJ中使用Evaluate Expression函数时,此bean仍然显示为null / empty。

我的类和每个bean类都在不同的项目中。工作bean位于核心项目中。破碎的bean位于一个依赖于核心项目的项目中,我的类位于一个依赖于破碎bean项目的项目中。

如果您需要更多信息来帮助我,请告诉我们!

编辑我的XML配置文件的简要说明:

有4个相关项目,我们称之为'核心','网络','普通'和'具体'。每个都有自己对应的application-context.xml。应用程序是从“特定”项目构建的.war文件中部署的。在“特定”web.xml的标记中,导入了“web”和“specific”的应用程序上下文。 'specific'application-context.xml的第一行导入'common'的应用程序上下文,这是我的新类所在的位置。第一行'web'application-context.xml导入'核心'应用程序上下文。工作请求范围的bean驻留在'核心'中; '网络'中破碎的那个。我希望这很清楚 - 如果没有,请告诉我!其他任何信息都有用吗?

1 个答案:

答案 0 :(得分:0)

可能是您未尝试在类中尝试访问的setter和getter的访问说明符(即Default)。尝试将其更改为公开并查看。