加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Netty 拭魅战:怎样编写一个麻小俱全的 Web 框架

发布时间:2019-02-20 23:36:09 所属栏目:建站 来源:逅弈
导读:进修 Netty 也有一段时刻了,为了更好的把握 Netty,我手动造了个轮子,一个基于 Netty 的 web 框架:redant,中文叫红火蚁。建设这个项目标目标首要是进修行使 Netty,俗话说不要等闲的造轮子,可是通过造轮子我们可以学到许多优越开源框架的计划思绪,编
副问题[/!--empirenews.page--]

进修 Netty 也有一段时刻了,为了更好的把握 Netty,我手动造了个轮子,一个基于 Netty 的 web 框架:redant,中文叫红火蚁。建设这个项目标目标首要是进修行使 Netty,俗话说不要等闲的造轮子,可是通过造轮子我们可以学到许多优越开源框架的计划思绪,编写美妙的代码,更好的晋升本身。

PS:项目地点:https://github.com/all4you/redant

Netty 拭魅战:怎样编写一个麻小俱全的 Web 框架

快速启动

Redant 是一个基于 Netty 的 Web 容器,相同 Tomcat 和 WebLogic 等容器

只必要启动一个 Server,默认的实现类是 NettyHttpServer 就能快速启动一个 web 容器了,如下所示:

  1. public final class ServerBootstrap { 
  2.     public static void main(String[] args) { 
  3.         Server nettyServer = new NettyHttpServer(); 
  4.         // 各类初始化事变 
  5.         nettyServer.preStart(); 
  6.         // 启动处事器 
  7.         nettyServer.start(); 
  8.     } 

我们可以直接启动 redant-example 模块中的 ServerBootstrap 类,由于 redant-example 中有许多示例的 Controller,我们直接运行 example 中的 ServerBootstrap,启动后你会看到如下的日记信息:

Netty 拭魅战:怎样编写一个麻小俱全的 Web 框架

在 redant-example 模块中,内置了以下几个默认的路由:

Netty 拭魅战:怎样编写一个麻小俱全的 Web 框架

启动乐成后,,可以会见 http://127.0.0.1:8888/ 查察结果,如下图所示:

Netty 拭魅战:怎样编写一个麻小俱全的 Web 框架

假如你可以看到 "Welcome to redant!" 这样的动静,那就声名你启动乐成了。

自界说路由

框架实现了自界说路由,通过 @Controller @Mapping 注解就可以独一确定一个自界说路由。如下列的 UserController 所示:

Netty 拭魅战:怎样编写一个麻小俱全的 Web 框架

和 Spring 的行使方法一样,会见 /user/list 来看下结果,如下图所示:

Netty 拭魅战:怎样编写一个麻小俱全的 Web 框架

功效渲染

今朝支持 json、html、xml、text 等范例的功效渲染,用户只必要在 要领的 @Mapping 注解上通过 renderType 来指定详细的渲染范例即可,假如不指定的话,默认以 json 范例范畴。

如下图所示,首页就是通过指定 renderType 为 html 来返回一个 html 页面的:

Netty 拭魅战:怎样编写一个麻小俱全的 Web 框架

IOC容器

从 UserController 的代码中,我们看到 userServerce 工具是通过 @Autowired 注解自动注入的,这个成果是任何一个 IOC 容器根基的手段,下面我们来看看怎样实现一个简朴的 IOC 容器。

起首界说一个 BeanContext 接口,如下所示:

  1. public interface BeanContext { 
  2.     /** 
  3.      * 得到Bean 
  4.      * @param name Bean的名称 
  5.      * @return Bean 
  6.      */ 
  7.     Object getBean(String name); 
  8.     /** 
  9.      * 得到Bean 
  10.      * @param name Bean的名称 
  11.      * @param clazz Bean的类 
  12.      * @param <T> 泛型 
  13.      * @return Bean 
  14.      */ 
  15.     <T> T getBean(String name,Class<T> clazz); 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读