【问题标题】:How to use provider in Errai IOC?如何在 Errai IOC 中使用提供者?
【发布时间】:2012-10-22 10:26:27
【问题描述】:

@IocProvider() 有问题,注解不起作用。 代码与https://docs.jboss.org/author/display/ERRAI/Container+Wiring非常相似

public interface Test {
    String getGreeting();
}

@ApplicationScoped
public class TestImpl implements Test {
    public String getGreeting() {
        return "Hello:)";
    }
}

@IOCProvider
@Singleton
public class TestProvider implements Provider<Test> {
    @Override
    public Test get() {
        return new TestImpl();
    }
}

然后我想在我的广播服务(errai-bus)中使用 DI。

@Service
public class BroadcastService implements MessageCallback {
    @Inject
    Test test;

    @Inject
    MessageBus bus;

    @Inject
    public BroadcastService(MessageBus bus) {
        this.bus = bus;
    }

    public void callback(Message message) {


        MessageBuilder.createMessage()
                .toSubject("BroadcastReceiver")
                .with("BroadcastText", test.getGreeting()).errorsHandledBy(new ErrorCallback() {
            @Override
            public boolean error(Message message, Throwable throwable) {
                return true;
            }
        }).sendNowWith(bus);
    }
}

我收到一个错误:

1) No implementation for com.gwtplatform.samples.basic.server.Test was bound.
  while locating com.gwtplatform.samples.basic.server.Test
    for field at com.gwtplatform.samples.basic.server.BroadcastService.test(BroadcastService.java:32)
  at org.jboss.errai.bus.server.service.ServiceProcessor$1.configure(ServiceProcessor.java:118)

如果我将代码更改为

@Inject
TestImpl test;

它有效,但我需要提供者。你有什么想法吗?

【问题讨论】:

    标签: gwt guice errai


    【解决方案1】:

    因为您尝试在服务器端代码中使用 @IOCProvider。 Errai IOC 完全是客户端。

    【讨论】:

      猜你喜欢
      • 2015-05-12
      • 2013-03-11
      • 2019-12-08
      • 2020-01-06
      • 2018-07-12
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多