java框架vertx_基于VertxWeb的SpringMVC风格注解实现(一)

前言

最近了解到了vertx这个异步框架,但平时用的比较多的还是spring,出于好奇,尝试基于vertx web去实现spring mvc风格注解。

最终效果如下所示

@Slf4j

@RestController

public class HelloController {

@RequestMapping("hello/world")

public String helloWorld() {

return "Hello world and nintha veladder";

}

@RequestMapping("echo")

public Map echo(String message, Long token, int code, RoutingContext ctx) {

log.info("uri={}", ctx.request().absoluteURI());

log.info("message={}, token={}, code={}", message, token, code);

HashMap map = new HashMap<>();

map.put("message", message);

map.put("token", token);

map.put("code", code);

return map;

}

@RequestMapping(value = "hello/array")

public List> helloArray(long[] ids, String[] names, RoutingContext ctx) {

log.info("ids={}", Arrays.toString(ids));

log.info("names={}", Arrays.toString(names));

return ctx.request().params().entries();

}

@RequestMapping("query/list")

public List> queryArray(List ids, TreeSet names, LinkedList rawList, RoutingContext ctx) {

log.info("ids={}", ids);

log.info("names={}", names);

log.info("rawList={}", rawList);

return ctx.request().params().entries();

}

@RequestMapping("query/bean")

public BeanReq queryBean(BeanReq req) {

log.info("req={}", req);

return req;

}

@RequestMapping(value = "post/body", method = HttpMethod.POST)

public BeanReq postRequestBody(@RequestBody BeanReq req) {

log.info("req={}", req);

return req;

}

}

@RestContoller

现在主流spring mvc的控制器一般是使用@RestController注解,它的主要作用是告诉框架这个类是请求控制器,让框架主动扫描并加载这个类。

这个注解本质是个标记注解,所以目前不需要其他字段。

@Documented

@Retention(RetentionPolicy.RUNTIME)

@Target({ElementType.METHOD, ElementType.TYPE})

public @interface RestController {

}

由于目前没有实现任何DI(依赖注入),为了方便我们直接在代码里面手动创建实例并加载。

@Override

public void start() throws Exception {

HttpServer server = vertx.createHttpServer();

Router router = Router.router(vertx);

routerMapping(new HelloController(), router);

server.requestHandler(router).listen(port, ar -> {

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值