我正在创建一个具有两个请求范围的bean的类。豆子类注解为:Spring请求范围的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仍然显示为空/空。
我的类和每个bean类都在不同的项目中。工作bean是核心项目。破坏的bean在一个依赖于核心项目的项目中,而我的类在一个依赖于破坏的bean项目的项目中。
请让我知道,如果您需要更多的信息来帮助我在这里!
编辑我的XML配置文件的简要说明:
有4个相关项目,让我们称他们为“核心”,“网页”,“普通”和“具体的”。每个应用程序都有自己对应的application-context.xml应用程序从“特定”项目构建的.war文件进行部署。在“特定”web.xml的标签中,导入了“web”和“特定”的应用程序上下文。 'specific'application-context.xml的第一行导入'common'的应用程序上下文,这是我的新类所在的地方。 'web'application-context.xml的第一行导入'核心'应用程序上下文。工作请求范围的bean驻留在'core'中;在'网络'中的破碎的一个。我希望这一点很明确 - 如果不是,请告诉我!其他信息会有用吗?
你可以发布你的web.xml和spring context xml以及不同的bean的包名称。我想知道的是,如果您设置了不同的应用程序上下文,并且您的非工作bean是在不支持Web的上下文中创建的(在这种情况下请求范围将不起作用)。 – pap
我不认为它是相关的,但你不做重定向或类似的东西,而不是一个前锋? –
我无法发布他们,但我会尽我所能来形容他们: –