(资料图)
一个高效的 Java 应用开发框架:更快、更小、更简单。不是 Spring,没有 Servlet,也无关 JavaEE;新兴独立的开放生态。主框架仅 0.1 MB。
150来个生态插件,覆盖各种不同的应用开发场景:
相对于 Spring Boot 和 Spring Cloud 的项目:
启动快 5 ~ 10 倍。
(更快)qps 高 2~ 3 倍。
(更高)运行时内存节省 1/3 ~ 1/2。
(更少)打包可以缩小到 1/2 ~ 1/10;比如,300Mb 的变成了 23Mb。
(更小)同时支持 jdk8, jdk11, jdk17, jdk19
似曾相似的体验,入门更简单,迁移很方便:
@Controllerpublic 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(String name) { return String.format("Hello %s!", name); }}
入门探索视频(用户录制):
本次更新:
调整 solon// 删降 Aop;由 Solon.context() 替代 删除 Bean:attr,Component:attr 删除 BeanLoadEndEvent,PluginLoadEndEvent;由 AppBeanLoadEndEvent,AppPluginLoadEndEvent 替代 删除 Utils.parallel()...等几个弃用接口;由 RunUtil 替代 删除 Solon.global();由 Solon.app() 替代 删除 SolonApp::port();由 Solon.cfg().serverPort() 替代 删除 SolonApp::enableSafeStop();由 Solon.cfg().enableSafeStop() 替代 删作 AopContext::getProps();由 ::cfg() 替代 删除 AopContext::getWrapAsyn();由 ::getWrapAsync() 替代 删除 AopContext::subWrap();由 ::subWrapsOfType() 替代 删除 AopContext::subBean();由 ::subBeansOfType() 替代 删除 AopContext::getBeanAsyn();由::getBeanAsync() 替代 删除 Solon.cfg().version();由 Solon.version() 替代 删除 EventBus::pushAsyn();由 pushAsync() 替代 删除 PrintUtil::debug(),::info() 等...;由 LogUtil 替代 删除 @Mapping::before,after,index 属性;由 @Before,@After 或 RouterInterceptor 或 Solon.app().before(),after() 替代 删除 "solon.profiles.active" 应用配置(只在某版临时出现过);由 "solon.env" 替代 删除 "solon.extend.config" 应用配置(只在某版临时出现过);由 "solon.config" 替代 删除 "solon.encoding.request" 应用配置(只在某版临时出现过);由 "server.request.encoding" 替代 删除 "solon.encoding.response" 应用配置(只在某版临时出现过);由 "server.request.response" 替代 调整 DownloadedFile,UploadedFile 字段改为私有;由属性替代 调整 solon.i18n// 删除 I18nBundle::toMap();由 ::toProp() 替代 调整 solon.web.cors// 删除 ..extend.cores 包;由 ..web.cors 包替代 调整 solon.cloud// 删除 Media::bodyAsByts()..;由 ::bodyAsBytes() 替代 调整 solon.cloud.httputils// 删除 cloud.HttpUtils::asShortHttp()..;由 ::timeout() 替代 调整 solon.test// 删除 test.HttpUtils::exec2()..;由 ::execAsCode()..替代 调整 solon.boot// 删除 SessionStateBase/cookie[SOLONID2] 调整 mybatis-solon-plugin// 删除 org.apache.ibatis.ext.solon.Db;由 ..solon.annotation.Db 替代 调整 beetlsql-solon-plugin// 删除 org.beetl.sql.ext.solon.Db;由 ..solon.annotation.Db 替代 调整 sa-token-solon-plugin// 删除 SaTokenPathFilter 类,由 SaTokenFilter 替代 删除 SaTokenPathInterceptor 类,由 SaTokenInterceptor 替代 删除插件 httputils-solon-cloud-plugin;由 solon.cloud.httputils 替代 删除插件 solon.extend.stop;由 solon.web.stop 替代 删除插件 solon.extend.async;由 solon.scheduling 替代 删除插件 solon.schedule;由 solon.scheduling.simple 替代 删除插件 solon.extend.retry 删除插件 solon.extend.jsr330 删除插件 solon.extend.jsr303 删除插件 solon.logging.impl;由 solon.logging.simple 替代 新增插件 powerjob-solon-plugin 新增插件 powerjob-solon-cloud-plugin(支持 solon cloud job 标准) 调整 solon.scheduling/JobManger 添加更多注册时检测 调整 solon.banner/banner.txt 自定义默认机制 调整 sa-token-solon-plugin/isPrint 处理机制 调整 sa-token-solon-plugin 增加对 sso,oauth2 两模块的适配 调整 nami 添加 ContentTypes 类,提供便利的 content-type 常量
进一步了解 Solon:
《想法与架构笔记》 《生态预览》 《与 Spring Boot 的区别?》 《与 Spring Cloud 的区别?》
项目仓库:
gitee:https://gitee.com/noear/solon github:https://github.com/noear/solon