java - Spring 请求范围的 bean - 所有字段为空/空

标签 java spring dependency-injection

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

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

他们在我类作为字段的声明是:

@Resource
private RequestScopedBean1 requestScopedBean1

@Resource
private RequestScopedBean2 requestScopedBean2

该系统已在我正在处理的所有代码库中使用,没有出现任何问题。但是,在我的类(class)中,其中一个注入(inject)的 bean(不是两个,只有一个!)的所有字段都为空/空。

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

我的类和每个bean类在不同的项目中。工作 bean 在核心项目中。损坏的 bean 在一个依赖于核心项目的项目中,而我的类在一个依赖于损坏的 bean 的项目的项目中。

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

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

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

最佳答案

可能是您尝试在类中访问的 setter 和 getter 的访问说明符未指定(即默认)。尝试将其更改为 public 并查看。

关于java - Spring 请求范围的 bean - 所有字段为空/空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8268559/

相关文章:

grails - 使用 PostContstruct 将服务注入(inject)标签库

java - Android Java 最小化时获取

java - 使用 PagerTitleStrip 均匀分布标题

java - 如何将String类型的数据集转换为Row类型的数据集?

java - Spring批量Excel扩展

java - 使用 Spring 实现 DAO

java - 如何配置从maven在GWT项目中运行

java - 将集合绑定(bind)到表单 - 为什么它不起作用?

jsf - 了解CDI中类型安全的必要性

java - Spring 自动接线