gpt4 book ai didi

java - bindFactory 不注入(inject)字段

转载 作者:行者123 更新时间:2023-11-30 07:07:22 29 4
gpt4 key购买 nike

我有这段代码来提供自定义可注入(inject)对象:

    config.register(new AbstractBinder() {
@Override
protected void configure() {
delegatorFactory = ...; //custom factory to delegate to
bindFactory(new Factory<Object>() {
@Inject
private Provider<ContainerRequestContext> req;

@Override
public void dispose(Object arg0) {
}

@Override
public Object provide() {
// req is needed but is null
}
}).to(delegatorFactory.getType()).in(RequestScoped.class);
}
});

不幸的是,正如 Provide() 中的注释所揭示的那样,执行时不会注入(inject) req 字段(我需要该位置的 ContainerRequestContext)。我缺少什么才能使它像这样工作,即注入(inject)工厂的字段?

最佳答案

将其与类绑定(bind)。大多数时候,当您开始自己实例化东西时,您就会失去注入(inject)的好处。所以只需使用一个类

bindFactory(YourFactoryClass.class)
<小时/>

更新

要让注入(inject)器手动注入(inject)工厂,您可以使用功能

public class YourFeature implements Feature {
@Override
public void configure(FeatureContext context) {
final ServiceLocator locator = ServiceLocatorProvider.getLocator(context);

locator.inject(anyObject);

context.register(new YourAbstractBinder());
}
}

config.register(new YourFeature());

关于java - bindFactory 不注入(inject)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39839827/

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