配置以在 Websocket 端點上獲取 Guice 注入
首先,我們需要一個自定義端點構建器。
public class WSConfigurator extends ServerEndpointConfig.Configurator {
@Inject
private static Injector injector;
@Override
public <T> T getEndpointInstance(Class<T> endpointClass)
throws InstantiationException
{
return injector.getInstance(endpointClass);
}
}
我們需要從我們的一個 Guice 模組中引導上面配置器中的注入器。
public class WebSocketModule extends AbstractModule {
@Override
protected void configure() {
requestStaticInjection(WSConfigurator.class);
}
}
最後,我們可以在端點的建構函式上使用 @Inject
。
@ServerEndpoint(
value = "/ws/sync",
configurator = WSConfigurator.class)
public class WSSync extends AsyncWebSocketServer {
@Inject
public WSSync(EventBus eventBus) {
...
}
}