das*_*apa 2 java cdi weld glassfish-4 java-ee-7
我正在本地 Glassfish 4.1.1 (WELD 2.2.2) 安装中运行一些关于 CDI 的概念验证。
我创建了一个名为 TipicalBean 的类 bean,它注入一个在生产者方法中生成的整数。
定义生产者方法的类如下所示
public class ProducerTest {
@Produces @MyNumber @Dependent public static int getMyNumber() {
return 100;
}
}
Run Code Online (Sandbox Code Playgroud)
这是行不通的。即使我将方法声明为静态
但如果将 @Dependent 作用域放入类定义中,它确实有效,如下所示:
@Dependent
public class ProducerTest {
Run Code Online (Sandbox Code Playgroud)
此外,如果我在注入它的同一个类中声明该生产者方法,我可以在生产者方法声明中定义 @Dependent 范围,但 WELD 会在 Glassfish 控制台中打印警告
WELD-000018: Executing producer field or method [BackedAnnotatedMethod] @Produces
@MyNumber @Dependent public mypackage.TipicalBean.produceMyNumber() on incomplete
declaring bean Managed Bean [class mypackage.TipicalBean] with qualifiers [@Any
@Default] due to circular injection
Run Code Online (Sandbox Code Playgroud)
为什么?生产者方法必须在 ManagedBeans 中定义吗?
由于我使用的是 JavaEE 7,因此我尚未创建 beans.xml 文件。
谢谢
| 归档时间: |
|
| 查看次数: |
5381 次 |
| 最近记录: |