JSR-299 规范在 §3.1 中声明:
如果托管 bean 类是泛型类型,则它必须具有 @Dependent 范围。如果带有参数化 bean 类的托管 bean 声明了除 @Dependent 之外的任何范围,则容器会自动检测到问题并将其视为定义错误。
实际上意味着你不能这样做:
@Named
@SessionScoped or @RequestScoped or similar
public class MyProducer<T> {...}
这个决定的技术原因是什么?
它会在即将发布的 CDI 版本中得到补救吗?
是否有处理/解决此问题的最佳实践?
谢谢
编辑- 我经常使用的一种解决方法是将通用 POJO-bean 注入具有所需范围的 bean 中。经常,但并非总是如此。