根据javadocs(http://docs.oracle.com/javaee/6/api/javax/enterprise/inject/package-summary.html),如果bean具有公共字段,则应将其分类为@Dependant。
在我们的代码库中,有一种情况,bean既是@ApplicationScoped也是@Singleton,但是它具有公共字段。由于未引发任何错误,此bean将被视为@Dependant还是仍将作为@ApplicationScoped工作?
谢谢
您的容器似乎不完全符合J2EE规范,这是无效的bean,并且容器应阻止应用程序启动。我已经确认Tomee 1.7.2就是这种情况。
托管bean上不允许使用公共字段,因为容器无法代理它们。这是必要的,当涉及到注入下范围为更高的那些(@Request
到@Application
例如)。我怀疑您的容器允许这样做,因为它不需要代理@ApplicationScoped
bean。
话虽如此,我建议您仅更改代码以使其符合规范,即使您的容器不符合规范,否则在以后的升级/迁移后它很可能会损坏!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句