我正在尝试编写一个简单的示例,在 CDI 2.0 中使用 Java SE 中的生产者方法,但遇到了Unsatisfied dependencies
问题。
这是制片人:
private Random ran = new Random();
@Produces
private List<Integer> get() {
return new ArrayList<Integer>() {{
add(ran.nextInt(100));
add(ran.nextInt(100));
}};
}
这是注入点:
public class RandomNumberService {
@Inject
private List<Integer> randomNumber;
public void print(){
System.out.println(randomNumber);
}
}
我通过像这样引导来运行示例:
public static void main(String... args) {
SeContainer container = SeContainerInitializer
.newInstance()
.initialize();
container.select(RandomNumberService.class).get().print();
container.close();
}
我有一个豆子.xml文件。
例外情况是:
线程"main"中的异常 org.jboss.weld.exceptions.DeploymentException: WELD-001408:在注入点 [BackedAnnotatedField] @Inject私有通信中@Default,带有限定符的 List 类型未满足的依赖项。XXXX.随机数在com。XXXX.RandomNumberService.randomNumber(RandomNumberService.java:0)
我尝试使用@Inject注入豆子,这没有问题,所以我知道基本设置是可以的。此外,我尝试使用具体类型 ArrayList 而不是该列表和相同的结果。
任何帮助将不胜感激。
为了回应我已经尝试过的答案。
我试过:@Inject @Any私有实例>随机数;
发生相同的错误。我也尝试过使用基元类型和包装器,我得到了相同的响应。
当我产生POJO时,结果相同。
@Produces
@Ford
public Car makeCar(){
return new Car();
}
@Inject @Ford
private Car car;
我开始怀疑问题出在 SeContainer 的配置上。
尝试以下操作:
@Any
@Inject
private Instance<Integer> randomNumber;
一旦Instance
实现了Iterable
,您将能够迭代这些值。