Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring中注入需要对框架类型进行子类化的具体类_Java_Spring - Fatal编程技术网

Java 在Spring中注入需要对框架类型进行子类化的具体类

Java 在Spring中注入需要对框架类型进行子类化的具体类,java,spring,Java,Spring,我有一个具体类型,它扩展了Netty框架中的类型: public class ServerHandlerImpl extends ChannelInboundHandlerAdapter implements ServerHandler ChannelInboundHandlerAdapter实现ChannelInboundHandler 当我创建ServerHandlerImpl时,我想使用Spring来注入它。我知道我可以使用混凝土类型。但我不确定是否有办法从接口注入 ServerHand

我有一个具体类型,它扩展了Netty框架中的类型:

public class ServerHandlerImpl extends ChannelInboundHandlerAdapter implements ServerHandler
ChannelInboundHandlerAdapter实现ChannelInboundHandler

当我创建ServerHandlerImpl时,我想使用Spring来注入它。我知道我可以使用混凝土类型。但我不确定是否有办法从接口注入

ServerHandler接口当前为空:

public interface ServerHandler {
}
当我尝试从接口注入类型时

@Autowired
private ServerHandler serverHandler;

@Override
protected void initChannel(Channel ch) throws Exception {
    pipeline.addLast(serverHandler);  
}

它不会编译,因为addLast正在寻找实现ChannelInboundHandler的类型,我的具体类型会这样做,但接口不会。在这种情况下人们会做什么?

这与Spring无关,而是与Java和OO编程有关

您声明有一个ServerHandler类型的对象,并尝试将其传递给一个方法pipeline.addLast,我猜它应该是io.netty.channel.ChannelHandler类型的对象。 ServerHandler不是ChannelHandler的子级,因此编译器无法接受它在运行时接收的真实实例是否为ChannelHandler的子级


这是一个简单的OO概念。在这里,我不明白为什么要将字段声明为ServerHandler。

这是因为java代理是如何工作的。。。例如,您可以创建一个服务来存储ChannelInboundHandlerAdapter实例(ChannelInboundService),在需要时自动连接此服务,并从中获取ChannelInboundHandlerAdapter引用。