高性能 Java 框架。Solon v1.12.3 发布(春节前兮的最后更)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一个更现代感的 Java "生态型"应用开发框架更快、更小、更自由。不是 Spring没有 Servlet也无关 JavaEE新兴独立的开放生态 已有150来个生态插件 。主框架仅 0.1 MB。

相对于 Spring Boot 和 Spring Cloud 的项目

  • 启动快 5 ~ 10 倍。 更快
  • qps 高 2~ 3 倍。 更高
  • 运行时内存节省 1/3 ~ 1/2。 更少
  • 打包可以缩小到 1/2 ~ 1/10比如300Mb 的变成了 23Mb。 更小
  • 同时支持 jdk8, jdk11, jdk17, jdk19

似曾相似的体验入门更简单

@Controller
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app->{
            //手写模式
            app.get("/", ctx -> ctx.outputAsJson("{message:'Hello world!'}"))
        });
    }

    //注解模式
    @Get
    @Socket
    @Mapping("/hello")
    public String hello(@Param(defaultValue = "java") String name) {
        return String.format("Hello %s!", name);
    }
}

入门探索视频用户录制

《bilibili - solon 入门探索》

本次更新

  • 修复 solon.test :: @TestRollback 事务回滚坏掉的问题v1.12.0 出现的
  • 增加 sa-token 拦截的新适配方式旧的标为弃用。
@Configuration
public class Config {
  @Bean(index = -100)  //-100是顺序位低值优先
  public void tokenPathInterceptor() {
     return new SaTokenInterceptor()....;
  }
}

详见https://solon.noear.org/article/110

  • 增加 sa-token-dao json 序列化适配现在有 base64 + json
  • 增加 RouterInterceptor::postResult 接口即可以修改返回结果
@Component
public class GlobalTransInterceptor implements RouterInterceptor {
    @Inject
    private TransService transService;

    @Override
    public void doIntercept(Context ctx, Handler mainHandler, RouterInterceptorChain chain) throws Throwable {
        chain.doIntercept(ctx, mainHandler);
    }

    @Override
    public Object postResult(Context ctx, Object result) throws Throwable {
        //此处为拦截处理
        if (result != null && !(result instanceof Throwable) && ctx.action() != null) {
            result = transService.transOneLoop(result, true);
        }

        return result;
    }
}

详见https://solon.noear.org/article/242

  • 增加 solon.serialization 所有 json 插件的统一快捷配置支持
solon.serialization.json:
  dateAsFormat: 'yyyy-MM-dd HH:mm:ss' #配置日期格式默认输出为时间戳
  dateAsTimeZone: 'GMT+8' #配置时区
  dateAsTicks: false #将date转为毫秒数和 dateAsFormat 二选一
  longAsString: true #将long型转为字符串输出 默认为false
  boolAsInt: false   #将bool型转为字符串输出 默认为false
  nullStringAsEmpty: false
  nullBoolAsFalse: false
  nullNumberAsZero: false
  nullArrayAsEmpty: false
  nullAsWriteable: false #输出所有null值

详见https://solon.noear.org/article/94

  • 调整 安全停止时由 403 改为 503 状态码
solon.app.safeStop=1

详见https://solon.noear.org/article/412

  • 升级 snack3 为 3.2.52
  • 升级 dbvisitor 为 5.2.0
  • 升级 fastjson2 为 2.0.23

生态架构图

进一步了解 Solon

项目仓库

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Java