要实现怎样的效果
一个SpringBoot框架搭建起来的项目发布接口服务是这样的
SpringBoot搭建教程点击这里
|
我希望我使用Netty构建的Web服务器也能使用这样便捷的注解方式去发布我的接口服务
该怎么做
- 使用Netty自带的编解码、聚合器构建一个带有Http编解码功能的服务器这一点其实非常简单,Netty提供了对应的Http协议的编解码以及聚合器,我们只需要在管道初始化的时候加载它们。
public class HttpPipelineInitializer extends ChannelInitializer<Channel> { |
- 实现RequestMapping注解,用于标识处理器或者控制器对应匹配的接口地址。
({ElementType.TYPE, ElementType.METHOD}) |
- 提供启动入口,程序启动时创建Spring容器,并基于Spring初始化必要组件
- 提供程序入口类
public class CettyBootstrap { |
- 定义默认实现的HttpServer组件,随Spring容器启动时加载基于Netty的Web容器,并使用HandlerMapping组件初始化HttpPipelineInitializer管道,其中HandlerMapping如果未有用户定义则使用默认的DefaultHandlerMapping实现
public class DefaultHttpServer extends ApplicationObjectSupport { |
- 提供默认的HandlerMapping实现类,负责匹配@RequestMapping注解下的处理函数
public class DefaultHandlerMapping extends ApplicationObjectSupport implements HandlerMapping { |
- 当请求进入时通过HandlerMapping组件匹配处理器,如果匹配失败则返回404
public class AllocHandler extends SimpleChannelInboundHandler<FullHttpRequest> { |
测试与使用
- 建立一个TestController
|
- 启动Spring容器
public class HttpServerTest { |
未来要做的
- 与Spring框架集成,将核心组件托管给Spring容器统一管理
- 提供静态资源映射
- 修改映射策略将请求映射至一个流程(一个处理器多个拦截器)
- 支持使用模板语法进行视图解析