美文网首页
轻量级 Java 应用开发框架,Solon & Solon Cl

轻量级 Java 应用开发框架,Solon & Solon Cl

作者: 草编椅 | 来源:发表于2021-11-15 16:50 被阅读0次

    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!";
        }
    }
    

    附:项目地址

    附:入门示例

    相关文章

      网友评论

          本文标题:轻量级 Java 应用开发框架,Solon & Solon Cl

          本文链接:https://www.haomeiwen.com/subject/esuqtrtx.html