我正在尝试编写一个使用CDI 2.0在Java SE中使用Producer方法的简单示例,但遇到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);
}
}
我通过bootstrapping运行这个例子:
public static void main(String... args) {
SeContainer container = SeContainerInitializer
.newInstance()
.initialize();
container.select(RandomNumberService.class).get().print();
container.close();
}
我有一个beans.xml文件。
例外是:
线程中的异常&#34; main&#34; org.jboss.weld.exceptions.DeploymentException:WELD-001408:用于与限定符类型List不合格依赖@default在注射点[BackedAnnotatedField]在com.XXXX.RandomNumberService.randomNumber(RandomNumberService.java @注入私人com.XXXX.randomNumber: 0)
我尝试使用@Inject注入bean,这没有问题,所以我知道基本设置没问题。另外,我试图使用具体类型ArrayList而不是List和相同的结果。
非常感谢任何帮助。
为了回答我的尝试。
我试过:@Inject @Any private Instance&gt; randomNumber;
发生同样的错误。此外,我尝试使用原始类型和包装器,我得到相同的响应。
生成POJO时的结果相同。
@Produces
@Ford
public Car makeCar(){
return new Car();
}
@Inject @Ford
private Car car;
我开始怀疑问题在于SeContainer的配置。