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

  • 增加 solon.serialization,做为序列化的基础插件

  • 优化 所有Json序列化插件,使之可方便定制类型序列化

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

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

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

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

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

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

关于 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

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

  1. // 除了注解模式之外,还可以按需手动
  2. //
  3. //手动获取配置(Props 为 Properties 增强版)
  4. Props db = Solon.cfg().getProp("db");
  5. //手动获取容器里的Bean
  6. UserService userService = Aop.get(UserService.class);
  7. //手动监听http post请求
  8. Solon.global().post("/user/update", x-> userService.updateById(x.paramMap()));
  9. //手动添加个RPC服务
  10. Solon.global().add("/rpc/", HelloService.class, true);
  11. //手动获取一个RPC服务消费端
  12. HelloService helloService = Nami.builder().create(HelloService.class);
  13. //手动为容器添加组件
  14. Aop.wrapAndPut(DemoService.class);

Hello world:

  1. //Handler 模式:
  2. public class App{
  3. public static void main(String[] args){
  4. SolonApp app = Solon.start(App.class,args);
  5. app.get("/",(c)->c.output("Hello world!"));
  6. }
  7. }
  8. //Controller 模式:(mvc or rest-api)
  9. @Controller
  10. public class App{
  11. public static void main(String[] args){
  12. Solon.start(App.class,args);
  13. }
  14. //限定 put & post 方法类型
  15. @Put
  16. @Post
  17. @Mapping("/")
  18. public String hello(String name){
  19. return "Hello " + name;
  20. }
  21. }
  22. //Remoting 模式:(rpc)
  23. @Mapping("/")
  24. @Remoting
  25. public class App implements HelloService{
  26. public static void main(String[] args){
  27. Solon.start(App.class,args);
  28. }
  29. @Override
  30. public String hello(){
  31. return "Hello world!";
  32. }
  33. }

附:项目地址

附:入门示例

轻量级 Java 基础开发框架,Solon & Solon Cloud 1.5.48 发布的更多相关文章

  1. 轻量级 Java 基础开发框架,Solon & Solon Cloud 1.5.40 发布

    Solon 已有120个生态扩展插件,此次版本以细节打磨为主: 增加 mybatisplus-solon-plugin 插件 //至此,Solon 已完成国内外主流的5个ORM框架插件适配 插件 so ...

  2. 轻量级 Java 基础开发框架,Solon & Solon Cloud 1.5.52 发布

    Solon 已有120个生态扩展插件,此次更新主要为细节打磨: 插件 mybatis-solon-plugin 增加 mappers 单行配置支持 之前的多行模式: mybatis.db1: type ...

  3. Solon & Solon Cloud 1.5.62 发布,轻量级 Java 基础开发框架

    Solon 已有120个生态扩展插件,此次更新主要为细节打磨,且对k8s和docker-compose更友好: 1.插件 solon.coud ,事件总线增加支持本地同主题多订阅模式(以支持同服务内, ...

  4. Solon 1.5.29 发布,轻量级 Java 基础开发框架

    本次版本主要变化: 增加 captcha-solon-plugin 插件(提供滑块验证与选文字验证能力) 插件 sa-token-solon-plugin,升级 sa-token 为 1.26.0 插 ...

  5. 轻量级Java EE开发框架设计系统应用架构

    首先来说一下Java EE 概述 其中常说的三大框架即是:ssh Spring:功能强大的组件粘合济,能够将你的所有的java功能模块用配置文件的方式组合起来(还让你感觉不到spring的存在)成为一 ...

  6. Java基础知识强化之IO流笔记48:IO流练习之 复制单级文件夹案例

    1. 复制单级文件夹     数据源:e:\\demo     目的地:e:\\test 分析: A:封装目录 B:获取该目录下的所有文本的File数组 C:遍历该File数组,得到每一个File对象 ...

  7. Java基础知识强化之集合框架笔记48:产生10个1~20之间的随机数(要求:随机数不能重复) 简洁版

    1. 编写一个程序,获取10个1至20的随机数,要求随机数不能重复. 分析:  A: 创建随机数对象  B: 创建一个HashSet集合  C: 判断集合的长度是不是小于10    是:就创建一个随机 ...

  8. Solon,一个轻量级的应用开发框架。发布官网喽!!!

    官网发布: https://solon.noear.org/ 项目简介: Solon,是一个轻量级的应用开发框架.更快.更小.更自由! 支持JDK8+:主框架0.1Mb:组合不同的插件应对不同需求:方 ...

  9. Java 超新星开源项目 Solon v1.10.10 发布

    一个更现代感的 Java 应用开发框架:更快.更小.更自由.主框架仅 0.1 MB.Helloworld: @Controller public class App { public static v ...

随机推荐

  1. DDL和客户端ip监控

    DDL触发器监控脚本部署步骤 以下操作请使用sys用户: --第一步:创建表(此表主要保存ddl触发器产生的信息),可以根据不同的业务,使用相关的监控用户,在此监控用户为c##upctest 从可维护 ...

  2. vue ele table表格 设置只能勾选一个

    table 更改属性设置: <el-table ref="multipleTable" :data="tableData" tooltip-effect= ...

  3. Spring中使用@within与@target的一些区别

    目录 背景 模拟项目例子 看看使用@within和@target的区别 @within @target @target 看起来跟合理一点 通知方法中注解参数的值为什么是不一样的 想用@within,但 ...

  4. 解决CSDN文章下载后,依然请求跳转至首页出错的问题

    1. 搜索关键字:"onerror"     然后找到如下所示代码: <div style="display:none;">     <img ...

  5. vue+element+echarts饼状图+可折叠列表

    html: <div id="echartsDiv" style="width: 48%; height: 430px; float: left;"> ...

  6. WinUI 3学习笔记(3)—— ComboBox & DropDownButton & SplitButton

    本篇想介绍相对小众但颇具使用价值的控件SplitButton,提到SplitButton难免会拿来与ComboBox进行比较,同时在WinUI 3的控件库中,还有一个默默无闻的DropDownButt ...

  7. C# 获取应用程序内存

    double usedMemory = 0;             Process p = Process.GetProcesses().Where(x => x.ProcessName.Co ...

  8. 日期SQL 脚本

    一个月第一天的 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)本周的星期一     SELECT DATEADD(wk, DATEDIFF(wk,0,g ...

  9. 在linux查询本机的公网IP

    linux服务器查看公网IP信息的方法 最近在解决网络问题时,需要查看本机的出口公网IP信息,所以在网络上搜索和请求运维达人,获得如下两个方法: curl ifconfig.me 在linux系统中输 ...

  10. 性能再提升70%?大咖前瞻带你揭开.NET6的神秘面纱!

    本月初微软官宣.NET 6 的RC1即将在11月正式发布,这意味着.NET6正式版跟我们见面的时间又近了一步.在之前的.NET6预览版本中,微软加入了大量新功能特性,而在最终版本中将不再额外加入新的内 ...