2

@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;

動作しますが、プロバイダーが必要です。何か考えがありますか?

4

1 に答える 1

1

サーバー側のコードで@IOCProviderを使用しようとしているためです。ErraiIOCは完全にクライアント側です。

于 2012-10-22T19:26:21.780 に答える