Jboot v3.6.9 发布,功能强大的 @JsonBody

栏目: 软件资讯 · 发布时间: 3年前

内容简介:Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos 等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对 java 代码、...

Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos 等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对 java 代码、html、css、js 等资源文件进行热加载。爽爽开发,快乐生活。

到目前为止,Jboot 已经开源超过了 4 年的时间,迭代了 160+ 个版本,已经被超过 1000+ 公司在使用,其中包含了多个知名的上市公司。

Jboot V3.6.9 主要增强 Jboot 和前端 Json 的交互能力与渲染能力,提现在新增了 @JsonBody 注解用于接收前端的的 Json 数据和重构 ErrorRender ,在程序发生错误的时候能够给到前端友好的体验。

@JsonBody 的功能非常强大,比如,前端传入的 Json 内容如下:

[1,2,3]

 如下的方法都可以正常接收数据:

 public void method1(@JsonBody() int[] beans) {
        System.out.println("beans--->" + beans);
        renderText("ok");
}



 public void method2(@JsonBody() String[] beans) {
        System.out.println("beans--->" + beans);
        renderText("ok");
}



 public void method3(@JsonBody() List beans) {
        System.out.println("beans--->" + beans);
        renderText("ok");
}


 public void method4(@JsonBody() Set beans) {
        System.out.println("beans--->" + beans);
        renderText("ok");
}


 public void method5(@JsonBody() List<Integer> beans) {
        System.out.println("beans--->" + beans);
        renderText("ok");
}


 public void method6(@JsonBody() Set<Integer> beans) {
        System.out.println("beans--->" + beans);
        renderText("ok");
}



 public void method7(@JsonBody() List<String> beans) {
        System.out.println("beans--->" + beans);
        renderText("ok");
}


 public void method8(@JsonBody() Set<String> beans) {
        System.out.println("beans--->" + beans);
        renderText("ok");
}

如果前端传入的是如下的 Json 数据:

{
   "aaa":{
      "bbb":[1,2,3]
      }
}

只需要在 @JsonBody 添加对应的前缀即可,比如:

 public void method1(@JsonBody("aaa.bbb") int[] beans) {
        System.out.println("beans--->" + beans);
        renderText("ok");
}

对 Java Bean 的支持也是非常友好的,比如 MyBean 的代码如下:

public class MyBean {
    private String id;
    private int age;
    private BigInteger amount;

    //getter setter
}

前端传入数据如下:

{
  "aaa":{
     "bbb":{
         "id":"abc",
         "age":17,
         "amount":123
      }
   }
 }

Controller 后端接收代码如下:

public void bean(@JsonBody("aaa.bbb") MyBean bean) {
    System.out.println("bean--->" + bean);
    renderText("ok");
}

或者,后端也可以直接使用一个 Map 来接收:

 public void map(@JsonBody("aaa.bbb") Map map) {
        System.out.println("map--->" + map);
        renderText("ok");
}

使用 Map 接收也可以直接指定 Map 的数据类型:

  public void map(@JsonBody("aaa.bbb") Map<String, String> map) {
        System.out.println("map--->" + map);
        renderText("ok");
  }

倘若前端传入的是 Bean 数组,例如:

{
    "aaa":{
        "bbb":[
            {
                "id":"abc",
                "age":17,
                "amount":123
            },
            {
                "id":"abc",
                "age":17,
                "amount":123
            }
        ]
    }
}

后端可以通过如下的方式进行接收数据,例如:

  public void list(@JsonBody("aaa.bbb") List<MyBean> list) {
        System.out.println("list--->" + list);
        renderText("ok");
  }

或者

public void set(@JsonBody("aaa.bbb") Set<MyBean beans) {
        System.out.println("array--->" + beans);
        renderText("ok");
}

或者

public void array(@JsonBody("aaa.bbb") MyBean[] beans) {
        System.out.println("array--->" + beans);
        renderText("ok");
}

@JsonBody 还有更多的支持,篇幅有限不再一一举例。

 

Jboot 主要有以下特征:

  • 1、基于 JFinal 的 MVC + ORM 快速开发
  • 2、基于 ShardingSphere + Seata 分布式事务 和 分库分表
  • 3、基于 Dubbo 或 Motan 的 RPC 实现
  • 4、基于 Sentinel 的分布式限流和降级
  • 5、基于 Apollo 和 Nacos 的分布式配置中心
  • 6、基于 EhCache 和 Redis 的分布式二级缓存

Jboot v3.6.9  更新内容如下:

  • 新增:AttachmentManager 新增保存文件的若干方法
    新增:Controller 参数新增 @JsonBody 的支持
    新增:Http 工具模块添加更多的配置,方便在 fatjar 模式下能配置 https 相关证书
    新增:ErrorRender 自动判断前端是否需要 json 渲染,当请求头是 application/json 的时候自动渲染错误的 json
    优化:JbootSimpleApplication,使之代码更加简洁
    优化:优化缓存拦截器对方法的 key 进行构建,提高性能
    优化:默认为 JbootAccessTokenCache 添加 2 个小时的缓存时间
    优化:LocalAttachmentContainer,默认保存文件的时候,对文件进行相同文件验证
    优化:JwtManager 对 Jwt 解析出错或没有 Jwt 数据时,返回常量 map
    优化:升级 JFinal、Undertow、Jackson 等到最新版本

开发文档:

https://jbootprojects.gitee.io/docs/

同时,Jboot 官方也推出了企业级开发框架 JbootAdmin,详情 https://jbootprojects.gitee.io/docs/jbootadmin/

maven 依赖:

<dependency>
    <groupId>io.jboot</groupId>
    <artifactId>jboot</artifactId>
    <version>3.6.9</version>
</dependency>

Hello World:

@RequestMapping("/")
public class HelloworldController extends JbootController {

    public void index(){
        renderText("hello world");
    }

    public static void main(String[] args){
        JbootApplication.run(args);
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

机器学习

机器学习

周志华 / 清华大学出版社 / 2016-1-1 / 88.00元

机器学习是计算机科学与人工智能的重要分支领域. 本书作为该领域的入门教材,在内容上尽可能涵盖机器学习基础知识的各方面。 为了使尽可能多的读者通过本书对机器学习有所了解, 作者试图尽可能少地使用数学知识. 然而, 少量的概率、统计、代数、优化、逻辑知识似乎不可避免. 因此, 本书更适合大学三年级以上的理工科本科生和研究生, 以及具有类似背景的对机器学 习感兴趣的人士. 为方便读者, 本书附录给出了一......一起来看看 《机器学习》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具