gpt4 book ai didi

java - Guice Inject Field in class NullPointerException,引入循环依赖问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:14:26 25 4
gpt4 key购买 nike

我需要在单独的库中定义的 Guice 中创建一个单例。

@RequiredArgsConstructor
public class Operator {

@NonNull private final Catalog catalog;

@Inject private Evaluator evaluator;
...
}

问题之一是此类引入了循环依赖,Evaluator -> Operator -> Evaluator。我知道这不是一个好的设计,但是被其他包消耗了,没有简单的方法来改变它。该库具有使用 Spring 框架创建的 bean,可以处理这种循环依赖。

现在我需要在基于Guice的服务中创建Operator的实例,我已经在服务中创建了单例Evaluator,但它无法将单例注入(inject)到Operator中。

@Provides @Singleton
public Operator operator(final Catalog catalog)
{
return new Operator(catalog);
}

@Provides @Singleton
public Evaluator evaluator(final Operator operator) {
return new Evaluator(operator);
}

由于 Operator 类正在用于基于 Spring 框架的其他服务,因此我不想更改它。我该怎么做才能让 Guice 能够将 Evaluator 注入(inject) Operator 中?

预先感谢您的帮助!

最佳答案

试试这个,希望对你有帮助。

public class Evaluator {
@Inject public Evaluator(Operator op) {
// ...
}
}
public class Operator {
@Inject public Operator(map m) {
// ...
}
}
public class map {
@Inject public map(Provider<Evaluator> EvaluatorProvider) {
// ...
}
}

关于java - Guice Inject Field in class NullPointerException,引入循环依赖问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45645661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com