Netty handler无法进行依赖注入的问题

使用Netty作为服务端程序时,遇到handler无法进行依赖注入的问题,代码如下:

@Slf4j
public class NettyServerHandler extends ChannelInboundHandlerAdapter {

	//注入失败,获取值为null
    @Autowired
    XxService xxService;

	//..........忽略其他程序
}    

解决方法如下及原理如下:

@Component //第1步
public class ServerHandler extends ChannelHandlerAdapter {

    @Autowired
    Dao dao; //第2步

    private static ServerHandler serverHandler; //第3步

    /**
     * 在方法上加该注解会在项目启动的时候执行该方法,即spring容器初始化的时候执行
     * 它与构造函数及@Autowired的执行顺序为:构造函数 >> @Autowired >> @PostConstruct
     */
    @PostConstruct // 第4步 添加 @PostConstruct 注解的方法
    public void init() {
        serverHandler = this;
    }
    
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    	//使用方法
    	serverHandler.dao.XXXXX();
    }
	
	//..................忽略其他函数
}  

你可能感兴趣的:(Netty,捉臭虫,netty)