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