ich einen konkreten Typ haben, Unterklasse muss die Typen aus dem Netty Rahmen erstreckt:Injizieren konkrete Klasse im Frühjahr, die einen Rahmen Typ
public class ServerHandlerImpl extends ChannelInboundHandlerAdapter implements ServerHandler
ChannelInboundHandlerAdapter implementiert ChannelInboundHandler
Wenn ich schaffen ServerHandlerImpl, möchte ich Verwenden Sie Spring, um es zu injizieren. Ich weiß, dass ich den Betontyp verwenden kann. Aber ich war mir nicht sicher, ob es eine Möglichkeit gab, von der Schnittstelle zu injizieren.
ServerHandler Schnittstelle jetzt leer ist:
public interface ServerHandler {
}
Wenn ich versuche, den Typ von der Schnittstelle zu injizieren,
@Autowired
private ServerHandler serverHandler;
@Override
protected void initChannel(Channel ch) throws Exception {
pipeline.addLast(serverHandler);
}
Es wird nicht kompiliert, da die addlast ist für einen Typ, der Geräte suchen ChannelInboundHandler, was mein konkreter Typ tut, aber die Schnittstelle nicht. Was machen Menschen in diesen Situationen?
Dies ist, weil die Java-Proxies funktionieren ... Sie können zum Beispiel einen Service erstellen, um ChannelInboundHandlerAdapter-Instanzen (ChannelInboundService) zu speichern, diesen Dienst überall automatisch ansteuern, wenn Sie ihn benötigen, und die Referenz channelInboundHandlerAdapter abrufen. – Dani