轻量级 Java 基础开发框架,Solon & Solon Cloud 1.5.48 发布

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

内容简介:Solon 已有120个生态扩展插件,此次更新主要为细节打磨: 增加 solon.serialization,做为序列化的基础插件 优化 所有Json序列化插件,使之可方便定制类型序列化 public class DemoApp { public static void...

Solon 已有120个生态扩展插件,此次更新主要为细节打磨:

  • 增加 solon.serialization,做为序列化的基础插件
  • 优化 所有Json序列化插件,使之可方便定制类型序列化

    public class DemoApp {
      public static void main(String[] args){
          Solon.start(DemoApp.class, args, app->{
              initMvcJsonCustom();
          });
      }
    
      /**
       * 初始化json定制(需要在插件运行前定制)
       */
      private static void initMvcJsonCustom() {
          //通过转换器,做简单类型的定制
          SnackRenderFactory.global
                  .addConvertor(Date.class, s -> s.getTime());
    
          SnackRenderFactory.global
                  .addConvertor(LocalDate.class, s -> s.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
    
          SnackRenderFactory.global
                  .addConvertor(LocalDateTime.class, s -> s.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
    
         //复杂的,可用原生编码接口
         //SnackRenderFactory.global.addEncoder(...)
      }
    }  
    
    //每个适配插件都会有自己定制渲染工厂
    //solon.serialization.snack3:: SnackRenderFactory
    //solon.serialization.jackson:: JacksonRenderFactory
    //solon.serialization.gson:: GsonRenderFactory
    //solon.serialization.fastjson:: FastjsonRenderFactory
    
  • 调整 CloudLockService,lock 更名为 tryLock

    public class DemoService{
      public void demo(long userId, ...){
          if(CloudCleint.lock().tryLock("user_id" + userId)){
              //获取分布式锁成功
              //..做业务
          }else{
              //提示...
          }
      }
    }
    
  • 引入 redisx 框架做为 solon.cache.redis 和 solon.extend.sessionstate.redis 的客户端

  • 插件 aws-s3-solon-plugin,改为基于 rest api 适配

    //大小从7MB 变成了 2KB:)
    
    CloudClient.file().put("user_1", new Media("{name:'noear'}"));
    
  • 插件 weed3-solon-plugin,weed3 升级为 3.4.1

  • 插件 mybatis-solon-plugin 增加 SqlSessionFactoryBuilder 可定制的能力

    public class DemoApp {
      public static void main(String[] args) {
          new SolonBuilder()
                  .onPluginLoadEnd(e -> {
                      //重新定义 SqlSessionFactoryBuilder(没有需要,最好别动它...)
                      Aop.wrapAndPut(SqlSessionFactoryBuilder.class, new SqlSessionFactoryBuilderImpl());
                  })
                  .start(DemoApp.class, args);
      }
    }  
    

关于 Solon

Solon 是一个轻量的Java基础开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Job、Micro service、WebSocket、Socket 等多种开发模式。短小而精悍!

关于 Solon Cloud

Solon Cloud 是一系列的接口标准和配置规范,相当于DDD模式里的防腐层概念。是 Solon 的微服务架构模式开发解决方案。

快速了解 Solon 的材料:

《Solon 特性简集,相较于 Springboot 有什么区别?》

《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》

《Solon 的想法与架构笔记》

所谓更小:

内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计)

所谓更快:

本机http helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test

所谓更自由:(代码操控自由)

// 除了注解模式之外,还可以按需手动
//
//手动获取配置(Props 为 Properties 增强版)
Props db = Solon.cfg().getProp("db");

//手动获取容器里的Bean
UserService userService = Aop.get(UserService.class);

//手动监听http post请求
Solon.global().post("/user/update", x-> userService.updateById(x.paramMap()));

//手动添加个RPC服务
Solon.global().add("/rpc/", HelloService.class, true);

//手动获取一个RPC服务消费端
HelloService helloService = Nami.builder().create(HelloService.class);

//手动为容器添加组件
Aop.wrapAndPut(DemoService.class);

Hello world:

//Handler 模式:
public class App{
    public static void main(String[] args){
        SolonApp app = Solon.start(App.class,args);
        
        app.get("/",(c)->c.output("Hello world!"));
    }
}

//Controller 模式:(mvc or rest-api)
@Controller
public class App{
    public static void main(String[] args){
        Solon.start(App.class,args);
    }
  
    //限定 put & post 方法类型
    @Put
    @Post
    @Mapping("/")
    public String hello(String name){
        return "Hello " + name;
    }
}

//Remoting 模式:(rpc)
@Mapping("/")
@Remoting
public class App implements HelloService{
    public static void main(String[] args){
        Solon.start(App.class,args);
    }

    @Override
    public String hello(){
        return "Hello world!";
    }
}

附:入门示例


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

Twenty Lectures on Algorithmic Game Theory

Twenty Lectures on Algorithmic Game Theory

Tim Roughgarden / Cambridge University Press / 2016-8-31 / USD 34.99

Computer science and economics have engaged in a lively interaction over the past fifteen years, resulting in the new field of algorithmic game theory. Many problems that are central to modern compute......一起来看看 《Twenty Lectures on Algorithmic Game Theory》 这本书的介绍吧!

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具