我定义了一个spring bean,扩展了另一个定义为singleton的bean。这意味着:
<bean id="aChildBean" parent="aParentBean">
<!-- ......->
</bean>
现在,我想知道我是否可以在此bean中定义范围“请求”。我知道子bean继承了父级的范围,但我不确定这在逻辑上是否有效。当我测试这个时,Spring spring产生了以下异常:
Error creating bean with name 'aChildBean': Scope 'request' is not active for the
current thread; consider defining a scoped proxy for this bean if you intend to refer
to it from a singleton; nested exception is java.lang.IllegalStateException: No thread
bound request found: Are you referring to request attributes outside of an actual web
request, or processing a request outside of the originally receiving thread? ...
所以,我想知道我是否可以采取这样的行动。并且,如果范围bean的定义解决了问题?
提前感谢您的回答..
答案 0 :(得分:0)
子bean定义从父级继承构造函数参数值,属性值和方法覆盖,并带有添加新值的选项。您指定的任何初始化方法,销毁方法和/或静态工厂方法设置都将覆盖相应的父设置。
其余设置始终取自子定义:取决于,autowire模式,依赖性检查,单例,范围,惰性初始化。
所以,你的bean IS&#34;请求&#34; scoped,但是&#34;请求&#34;范围仅在Web环境中有意义。请参阅here&#34; request&#34;的文档。范围。