![](/img/trans.png)
[英]Using CDI (Context & Dependency Injection) backing beans instead of Managed Beans
[英]CDI injection of beans with no scope
我们有一个使用以下内容的CDI项目:
在webapp的beans.xml
文件中,发现模式配置为建议的设置: bean-discovery-mode="annotated"
。 尽管如此,我仍然可以注入此类,但未使用范围进行注释:
public class TestClass implements Serializable {
public String getDescription() {
return "This is a test class";
}
}
ViewScoped
进入此ViewScoped
类:
@ViewScoped
@Named
public class AuthenticationWebBean implements Serializable {
@Inject
private TestClass testClass;
我希望这会引发异常,或者将字段保留为null。 正在发生的事情在这里,并且将注入的Object
采取同样的范围作为object
它注入?
提前致谢。
您描述的行为在CDI 1.1 / 1.2中,遵循Java EE 7的容器将遵循它。
您正在使用兼容Java EE 6 / CDI 1.0的TomEE 1.7.2。 它将在CDI 1.0的规则下运行,该规则使所有内容都成为CDI组件。
TomEE 7将开始演示您正在描述的行为。
TomEE通常仅支持Java EE 6,只有夜间构建支持Java EE7。Java EE 7仅支持bean-discovery-mode="annotated"
。这意味着在TomEE中,它很可能被忽略,然后考虑将所有bean用于注射。 如果要从注入中排除bean,请使用@Alternative
对其进行@Alternative
。 否则,将以与注入bean相同的作用域注入bean。 这等效于@Dependent
范围,这是默认设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.