
Magician-Route 是 Magician 的官方 web 组件,由 Magician-Web 发展而来的新项目,主要是去掉了里面的反射,牺牲了一点易用性,将侧重点放在了性能上,两者的区别主要在于路由和拦截器的创建方式上。
Magician-Web 依然会继续维护,如果大家对反射的性能不是特别抗拒,而且更喜欢 Magician-Web 的风格,大可放心使用。
由注解的形式改成了 传参的形式,每一次的请求都不再需要通过反射来执行了路由了,性能得到了有效提升
@Route public class DemoRoute implements MagicianInitRoute { @Override public void initRoute(MagicianRouteCreate routeCreate) { routeCreate.get("/demo/getForm", request -> { return "{"msg":"hello login"}"; }); // Magician 的原生响应方式 routeCreate.get("/demo/getForm2", request -> { request.getResponse().sendJson("{"msg":"hello login"}"); return null; }); routeCreate.post("/demo/json", request -> { DemoResponseVo demoRespOnseVo= new DemoResponseVo(); demoResponseVo.setName("Beerus"); return demoResponseVo; }); } } 如果你想让实体类顺利的接收到参数,并且让参数验证生效,那么必须做如下步骤, 这种方式 底层是用的反射,如果你无法接受反射的性能,那么可以不用这种方式,选择权在你自己
routeCreate.get("/demo/getForm", request -> { DemoVO demoVO = ConversionUtil.conversion(request, DemoVO.class); return "{"msg":"hello login"}"; }); 如果验证失败,conversionAndVerification 方法会抛出一个异常,这个异常会自动被响应给客户端,不需要开发者处理
routeCreate.get("/demo/getForm", request -> { DemoVO demoVO = ConversionUtil.conversionAndVerification(request, DemoVO.class); return "{"msg":"hello login"}"; }); 如果你想获取到验证失败的提示信息 自己处理,可以用这种方式
routeCreate.get("/demo/getForm", request -> { try { DemoVO demoVO = ConversionUtil.conversionAndVerification(request, DemoVO.class); } catch(VerificationException e){ // 这个就是 验证失败的提示信息 String msg = e.getMessage(); } return "{"msg":"hello login"}"; }); 跟路由一样,这种类也可以创建多个,根据你的需求 分开创建拦截器
@Interceptor public class DemoInter implements MagicianInitInterceptor { @Override public void initInterceptor(MagicianInterceptorCreate interceptorCreate) { interceptorCreate.addInterceptor("/demo/*", new MagicianInterceptor() { @Override public Object before(MagicianRequest magicianRequest) { System.out.println("进入了拦截器"); return SUCCESS; } @Override public Object after(MagicianRequest magicianRequest, Object o) { return SUCCESS; } }); interceptorCreate.addInterceptor("/*/form", new MagicianInterceptor() { @Override public Object before(MagicianRequest magicianRequest) { System.out.println("进入了拦截器 2"); return SUCCESS; } @Override public Object after(MagicianRequest magicianRequest, Object o) { return SUCCESS; } }); } } 可以访问官网了解更多:https://magician-io.com
1 bthulu Nov 22, 2022 看了代码才知道原来是 java 的, java 不是都 spring 一把梭么, 谁会来用你这个. 你整个 js 的说不定用的人还多些, 就前端最喜欢新玩意 |
2 Joker123456789 OP |