当前位置: 首页 > 知识库问答 >
问题:

在JavaSE中使用生产者方法(CDI2.0)

段干浩荡
2023-03-14

我试图写一个简单的例子,在CDI 2.0的JavaSE中使用生产者方法,但是遇到了一个不满足的依赖关系问题。

以下是制作人:

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”组织中出现异常。jboss。焊接例外情况。DeploymentException:WELD-001408:在注入点[BackedAnnotatedField]@InjectPrivate com处具有限定符@Default的类型列表的未满足依赖项。XXXX。随机数字在com。XXXX。随机数服务。randomNumber(RandomNumberService.java:0)

我已经尝试使用@Inject来注入bean,这是没有问题的,所以我知道基本设置是可以的。此外,我还尝试使用具体类型ArrayList,而不是该列表和相同的结果。

任何帮助都将不胜感激。

作为对我尝试过的答案的回应。

我试过:@Inject@任何私有实例

同样的错误也会发生。我也尝试了一个原始类型和一个包装器,我得到了同样的反应。

当我产生POJO时,结果也是一样的。

@Produces
@Ford
public Car makeCar(){
    return new Car();
}

@Inject @Ford
private Car car;

我开始怀疑问题在于SeContainer的配置。

共有1个答案

宿淳
2023-03-14

请尝试以下操作:

@Any
@Inject
private Instance<Integer> randomNumber;

一旦Instance实现了Iterable,您将能够迭代这些值。

 类似资料:
  • 我有一个消费者作为生产者消费者模式的一部分: 简化: 如果我移除 通过将线程设置为睡眠,CPU使用率攀升到极高的水平(13%),而不是0%。 此外,如果我实例化该类的多个实例,则每个实例的CPU使用率都会以13%的增量攀升。 大约每分钟(可能每30秒)都会向BlockingCollection添加一个新的LogItem,并将适用的消息写入文件。 有没有可能线程以某种方式阻止了其他线程的运行,而系统

  • 我在这里的部分问题是使用正确的词汇,所以我提前为可能是一个简单的术语问题道歉。 假设我有一个接口和一个实现该接口的类。 进一步假设我在某个地方有一个生产者方法(注释为),它返回一个。在内部,它返回一个新的,但这既不是这里也不是那里。 最后,假设我有另一个CDIBean,其注入点定义如下: 假设我有所有的文件就位等,并具有自举焊接或其他符合CDI-1.0的环境,因此我将得到一个不明确的定义错误。这很

  • 使用野蝇8.2.0。最后,我相信使用焊接2.2,我已经在Maven多模块项目中用2个简单的类重现了这个问题。一个产生一个,另一个产生一个注入点。Arquillian部署失败与:不满足的依赖关系。生产者位于包含在消费者的WEB-INF/lib中的库jar中。生产者在META-INF中有一个,其中,消费者在WEB-INF中有一个。 复制步骤:下载此项目并从根目录运行。 这是一个关键错误。还有一些关于W

  • 第二台运行linux或windows的机器(双引导),带有生成程序: 在server.properties上尝试了一些配置: 1 listeners=plaintext:\0.0.0.0:9092已播发。listeners=plaintext:\something:9092 第二台机器上的生产者: 在windows上工作,在linux上不工作 3#Listeners=#Advertised.Lis

  • 我有一个循环缓冲区(数组/先进先出),一个消费者和一个生产者。生产者将随机数放入数组中,消费者获取第一个数字并检查它是否是相对素数。 我的代码工作正常,我认为它工作正常,但我想改进它。我不太确定我的“空运行”方法。我应该在其他地方做异常处理吗?改变“无限循环”?不应更改方法签名(它们是预定义的)。 我会很高兴每一个改进代码的建议。(不在乎知名度(公开,...),还有静态的东西,我刚刚把它们放在一个

  • 我在producer端启用了snappy压缩,批量大小为64kb,处理每个1KB的消息,并将延迟时间设置为inf,这是否意味着在我处理64条消息之前,producer不会将消息发送给kafka out topic。。。Kafk64将发送一条消息,或每一个消息的制作人将发送另一个消息。。。 因为偏移量一个接一个地增加,而不是64的倍数 编辑-使用flink-kafka连接器