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

时间:2017-05-22 21:46:46

标签: java spring

我有一个从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的类型,我的具体类型可以这样做,但接口没有。人们在这些情况下做了什么?

1 个答案:

答案 0 :(得分:0)

这与Spring无关,但与Java和OO编程无关。

你声明有一个ServerHandler类型的对象,并尝试将它传递给方法pipeline.addLast,我想这是一个类型为io.netty.channel.ChannelHandler的对象。 ServerHandler不是ChannelHandler的子代,因此编译器不能接受它不能保证它在运行时将接收的实例将是ChannelHandler的子代。

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