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

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

内容简介: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);
    }
}

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

查看所有标签

猜你喜欢:

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

Ethnography and Virtual Worlds

Ethnography and Virtual Worlds

Tom Boellstorff、Bonnie Nardi、Celia Pearce、T. L. Taylor / Princeton University Press / 2012-9-16 / GBP 21.00

"Ethnography and Virtual Worlds" is the only book of its kind - a concise, comprehensive, and practical guide for students, teachers, designers, and scholars interested in using ethnographic methods t......一起来看看 《Ethnography and Virtual Worlds》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码