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

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);
    }
}

猜你喜欢

转载自www.oschina.net/news/123047/jboot-3-6-9-released