Netty 实战:如何编写一个麻小俱全的 Web 框架
学习 Netty 也有一段时间了,为了更好的掌握 Netty,我手动造了个轮子,一个基于 Netty 的 web 框架:redant,中文叫红火蚁。创建这个项目的目的主要是学习使用 Netty,俗话说不要轻易的造轮子,但是通过造轮子我们可以学到很多优秀开源框架的设计思路,编写优美的代码,更好的提升自己。 PS:项目地址:https://github.com/all4you/redant 快速启动Redant 是一个基于 Netty 的 Web 容器,类似 Tomcat 和 WebLogic 等容器 只需要启动一个 Server,默认的实现类是 NettyHttpServer 就能快速启动一个 web 容器了,如下所示:
我们可以直接启动 redant-example 模块中的 ServerBootstrap 类,因为 redant-example 中有很多示例的 Controller,我们直接运行 example 中的 ServerBootstrap,启动后你会看到如下的日志信息: 在 redant-example 模块中,内置了以下几个默认的路由: 启动成功后,,可以访问 http://127.0.0.1:8888/ 查看效果,如下图所示: 如果你可以看到 "Welcome to redant!" 这样的消息,那就说明你启动成功了。 自定义路由框架实现了自定义路由,通过 @Controller @Mapping 注解就可以唯一确定一个自定义路由。如下列的 UserController 所示: 和 Spring 的使用方式一样,访问 /user/list 来看下效果,如下图所示: 结果渲染目前支持 json、html、xml、text 等类型的结果渲染,用户只需要在 方法的 @Mapping 注解上通过 renderType 来指定具体的渲染类型即可,如果不指定的话,默认以 json 类型范围。 如下图所示,首页就是通过指定 renderType 为 html 来返回一个 html 页面的: IOC容器从 UserController 的代码中,我们看到 userServerce 对象是通过 @Autowired 注解自动注入的,这个功能是任何一个 IOC 容器基本的能力,下面我们来看看如何实现一个简单的 IOC 容器。 首先定义一个 BeanContext 接口,如下所示:
(编辑:ASP站长网) |