与 HarmonyOS NEXT 10月8日公测同行。Solon (开放原子开源基金会,孵化项目) v3.0 正式发布,
且将在 2025 年启动华为编程语言 “仓颉” 版开发(届时会有 Solon-Java 和 Solon-CJ 两大版本)。本次大版本更新,费时多月:
- 与 Solon v2.9 保持兼容(向下兼容)
- 与 JDK8, JDK11, JDK17, JDK21, JDK23 保持兼容(全系兼容)
Solon 框架!
Java “新式”应用开发框架,2017~2024。从零开始构建(非 java-ee 架构),有机动的接口规范与开放生态。
- 寻求: 更快、更小、更简单
- 提倡: 克制、简洁、高效、开放、生态
- 官网: https://solon.noear.org
有什么特点?
特点描述更高的计算性价比并发高 300%;内存省 50%更快的开发服从代码少;入门快;调试重启快 10 倍更好的生产与部署体验打包小 90%更大的兼容范围非 java-ee 架构;同时支持 java8 ~ java23,graalvm native image 更新与兼容详细说明:
1、概述
v3.0 版本重要是,内核删除了 20Kb 的弃用代码及相应的调解。最新内核为 0.3Mb。
- 移除的设置,要认真查抄;
- 移除的变乱,要认真查抄;
- 弃用接口移除等编译时会堕落提醒,题目不大。
新增或重构插件有:
- solon-data-sqlutils(编译巨细为 10Kb 的小工具)
- solon-web-webservices
- solon-net-stomp
- nami-channel-http(用于替换 nami-channel-http-okhttp)
- solon-net-httputils(重构,添加 HttpURLConnection 适配;编译巨细为 40Kb)
2、弃用设置移除对应表(要认真查抄)
类型移除设置名替换设置名启动参数solon::- configconfig.add应用属性solon::- solon.configsolon.config.add
类型弃用设置名替换设置名应用属性solon-boot::- server.session.state.domainserver.session.cookieDomain- server.session.state.domain.autoserver.session.cookieDomainAutosolon-web-staticfiles::- solon.staticfiles.maxAgesolon.staticfiles.cacheMaxAge 3、弃用变乱移除对应表(要认真查抄)
插件移除变乱替换方案solon@Bean bean?getBeanAsync(…class, …) / @Inject ..@Component bean?getBeanAsync(…class, …) / @Inject ..solon-serialization-fastjsonFastjsonActionExecutorgetBeanAsync(…class, …) / @Inject ..FastjsonRenderFactorygetBeanAsync(…class, …) / @Inject ..solon-serialization-fastjson2Fastjson2ActionExecutorgetBeanAsync(…class, …) / @Inject ..Fastjson2RenderFactorygetBeanAsync(…class, …) / @Inject ..solon-serialization-furyFuryActionExecutorgetBeanAsync(…class, …) / @Inject ..solon-serialization-gsonGsonActionExecutorgetBeanAsync(…class, …) / @Inject ..GsonRenderFactorygetBeanAsync(…class, …) / @Inject ..solon-serialization-hessianHessianActionExecutorgetBeanAsync(…class, …) / @Inject ..solon-serialization-jacksonJacksonActionExecutorgetBeanAsync(…class, …) / @Inject ..JacksonRenderFactorygetBeanAsync(…class, …) / @Inject ..solon-serialization-jackson-xmlJacksonXmlActionExecutorgetBeanAsync(…class, …) / @Inject ..JacksonXmlRenderFactorygetBeanAsync(…class, …) / @Inject ..solon-serialization-propertiesPropertiesActionExecutorgetBeanAsync(…class, …) / @Inject ..PropertiesRenderFactorygetBeanAsync(…class, …) / @Inject ..solon-serialization-protostuffProtostuffActionExecutorgetBeanAsync(…class, …) / @Inject ..solon-serialization-snack3SnackActionExecutorgetBeanAsync(…class, …) / @Inject ..SnackRenderFactorygetBeanAsync(…class, …) / @Inject ..solon-view-beetlGroupTemplategetBeanAsync(BeetlRender.class, …) / @Inject ..solon-view-enjoyEnginegetBeanAsync(EnjoyRender.class, …) / @Inject ..solon-view-freemarkerConfigurationgetBeanAsync(FreemarkerRender.class, …) / @Inject ..solon-view-thymeleafTemplateEnginegetBeanAsync(ThymeleafRender.class, …) / @Inject ..solon-view-velocityRuntimeInstancegetBeanAsync(VelocityRender.class, …) / @Inject .. 以上变乱替换的扩展方案(示例):
- @Configuration
- public class App {
- public static void main(String[] args) {
- Solon.start(App.class, args, app -> {
- //1.第一时间手动获取(在其它注入前执行)
- app.context().getBeanAsync(Xxx.class, e -> {
- });
- });
- }
- //2.由扫描时自动注入
- @Bean
- public void cfg(Xxx xxx) {
- }
- }
复制代码 什么时间用变乱扩展好(尽量不用)?
4、弃用 Before、After 处置处罚体系移除(编译会有提醒)
影响替换方案全局方面由 RouterInterceptor 替换本地网关方面由 Filter 替换,大概自己可扩展注解方面(控制器相干)由 @Addition(Filter) 替换 其中“本地网关”,可以通过定制恢复旧版能力:https://solon.noear.org/article/214
5、弃用类型移除对应表(编译会有提醒)
插件移除类型替换类型nami@Body@NamiBodyNamiBodyAnno@Mapping@NamiMappingNamiMappingAnnosolon@PathVar@Path@PropertySource@Import@ProxyComponent@Component@Before(Handler)@Addition(Filter)@After(Handler)@Addition(Filter)Endpoint/SolonBuilder/ValHolder/InitializingBean@InitNdMapIgnoreCaseMap<Object>solon-dataSerializercore::Serializersolon-data-dynamicdsDynamicDsHolderDynamicDsKeysolon-loggingLogUtilToSlf4j/solon-logging-log4jSolonCloudAppender/solon-logging-logbackSolonCloudAppender/solon-serializationJsonConvertercore::ConverterStringSerializercore::Serializer<String>solon-test@TestPropertySource@Import@TestRollback@RollbackAbstractHttpTesterHttpTesterHttpTestBaseHttpTester 6、弃用接口方法移除对应表(编译会有提醒)
调解类移除方法(或字段)替换方法nami::- ConstantsCONTENT_TYPE_*solon::- ActionParamResolverresolvePathVar()- ActionDefaultbefore(.)/ 只留 filter 体系after(.)/- AppContextbeanOnloaded(.)lifecycle(.)- Beanregistered()delivered()- BeanContainergetAttrs()attachment*(.)beanAround*(.)beanInterceptor*(.)- ClassUtilnewInstance(.)tryInstance(.)- ClassWrapgetFieldAllWraps()getFieldWraps()- Componentregistered()delivered()- ConditionUtilifMissing(.)ifMissingBean(.)- Contextip()remoteIp()param(key,def)paramOrDefault(key,def)paramSet(.)paramMap().add(.)paramsMap()paramMap().toValuesMap()paramsAdd(.)paramMap().add(.)files(.)fileValues(.)filesMap()fileMap().toValuesMap()cookie(key,def)cookieOrDefault(key,def)header(key,def)headerOrDefault(key,def)headersMap()headerMap().toValuesMap()session(key,def)sessionOrDefault(key,def)statusSet(.)status(.)attr(key,def)attrOrDefault(key,def)attrClear()attrsClear()- DateAnalyzergetGlobal()global()- EventBuspushAsync()publishAsync()pushTry()publishTry()push()publish()- Gatewaybefore(.)/ 只留 filter 体系after(.)/- LifecycleBeanprestop()preStop()- LogUtildebugAsync()/infoAsync()/- MethodHoldergetArounds()getInterceptors()- MethodWrapgetArounds()getInterceptors()- MvcFactoryresolveParam(.)resolveActionParam(.)- NvMap(map)from(map)getBean(.)toBean(.)- PropsgetByParse(.)getByTmpl(.)getXmap(.)getMap(.)getBean(.)toBean(.)- RenderManagermapping(.)Solon.app().render(key, )register(.)Solon.app().render(null, .)- ResourceUtilremClasspath(.)remSchema(.)- RoutermatchOne(.)matchMain(.)- RunUtilsetExecutor(.)setParallelExecutor(.)- SolonAppbefore(.)/ 只留 filter 体系after(.)/- SolonPropssource()app.source()sourceLocation()app.sourceLocation()- UtilsTAG_classpath/resolvePaths(.)/hasClass(.)ClassUtil.hasClass(.)loadClass(.)ClassUtil.loadClass(.)newInstance(.)ClassUtil.tryInstance(.)getResource*(.)ResourceUtil.getResource*(.)transferTo*(.)IoUtil.transferTo*(.)buildExt(.)getFolderAndMake(.)solon-boot::- HttpServerConfigureallowSsl(.)enableSsl(.)solon-data::- CacheServiceget(key)get(key, type)solon-scheduling::- IJobManagersetJobInterceptor(.)addJobInterceptor(.)solon-serialization-properties::- PropertiesActionExecutorincludeFormUrlencoded(.)allowPostForm(.) 7、弃用插件移除对应表
其中简化了快捷组合包(发现太多,容易混乱),只留两个基础的:
- solon-lib(保持不变)
- solon-web(移除了 solon-view-freemarker)
移除插件替换插件备注:: cloudsolon.cloud.httputilssolon-net-httputils:: detectordetector-solon-pluginsolon-health-detector:: logginglog4j2-solon-pluginsolon-logging-log4j2logback-solon-pluginsolon-logging-logback:: schedulingsolon.extend.schedule/:: testingsolon.testsolon-test:: websolon.web.fluxsolon-web-rx:: shortcutssolon-apisolon-websolon-job/改用 solon-lib +solon-rpc/改用 solon-web +solon-beetl-web/改用 solon-web +solon-enjob-web/改用 solon-web +solon-web-beetl/改用 solon-web +solon-web-enjoy/改用 solon-web +solon-cloud-alibaba/改用 solon-web + solon-cloud +solon-cloud-water/改用 solon-web + solon-cloud + 移除的快捷组合包,可通过以下方式组合:
- solon-job=
- solon-lib + solon-scheduling-simple
- solon-rpc=
- solon-web + nami-coder-snack3 + nami-channl-http-okhttp
- solon-beetl-web(或 solon-web-beetl)=
- solon-web + solon-view-beetl + beetlsql-solon-plugin
- solon-enjoy-web(或 solon-web-enjoy)=
- solon-web + solon-view-enjoy + activerecord-solon-plugin
- solon-cloud-alibaba=
- solon-web + solon-cloud + nacos-solon-cloud-plugin + rocketmq-solon-cloud-plugin + sentinel-solon-cloud-plugin
- solon-cloud-water=
- solon-web + solon-cloud + water-solon-cloud-plugin
8、部分插件名字调解对应表(旧名标为弃用,仍可用)
新的调解按以下插件命名规则实行:
插件命名规则说明solon-*(由 solon.* 调解而来)表示内部架构插件*-solon-plugin(保持不变)表示外部适配插件*-solon-cloud-plugin(保持不变)表过云接口外部适配插件 对应的“旧名”,仍可利用。预计会保留一年左右。具体调解如下:
新名旧名备注:: naminami-channel-http-hutoolnami.channel.http.hutoolnami-channel-http-okhttpnami.channel.http.okhttpnami-channel-socketdnami.channel.socketdnami-coder-fastjsonnami.coder.fastjsonnami-coder-fastjson2nami.coder.fastjson2nami-coder-furynami.coder.furynami-coder-hessiannami.coder.hessiannami-coder-jacksonnami.coder.jacksonnami-coder-protostuffnami.coder.protostuffnami-coder-snack3nami.coder.snack3:: basesolon-config-bannersolon.bannersolon-config-yamlsolon.config.yamlsolon-config-plus从原 solon.config.yaml 里拆出来solon-hotplugsolon.hotplugsolon-i18nsolon.i18nsolon-mvcsolon.mvcsolon-proxysolon.proxysolon-rx新增:: bootsolon-boot-jdkhttpsolon.boot.jdkhttpsolon-boot-jetty-add-jspsolon.boot.jetty.add.jspsolon-boot-jetty-add-websocketsolon.boot.jetty.add.websocketsolon-boot-jettysolon.boot.jettysolon-boot-jlhttpsolon.boot.jlhttpsolon-boot-smarthttpsolon.boot.smarthttpsolon-boot-socketdsolon.boot.socketdsolon-boot-undertow-add-jspsolon.boot.undertow.add.jspsolon-boot-undertowsolon.boot.undertowsolon-boot-vertxsolon.boot.vertxsolon-boot-websocket-nettysolon.boot.websocket.nettysolon-boot-websocketsolon.boot.websocketsolon-bootsolon.boot:: cloudsolon-cloud-eventplussolon.cloud.eventplussolon-cloud-gatewaysolon.cloud.gatewaysolon-cloud-metricssolon.cloud.metricssolon-cloud-tracingsolon.cloud.tracingsolon-cloudsolon.cloud:: datasolon-cache-caffeinesolon.cache.caffeinesolon-cache-jedissolon.cache.jedissolon-cache-redissonsolon.cache.redissonsolon-cache-spymemcachedsolon.cache.spymemcachedsolon-data-dynamicdssolon.data.dynamicdssolon-data-shardingdssolon.data.shardingdssolon-datasolon.data:: detectorsolon-health-detectorsolon.health.detectorsolon-healthsolon.health:: docssolon-docs-openapi2solon.docs.openapi2solon-docs-openapi3solon-docssolon.docs:: faassolon-faas-luffysolon.luffy:: loggingsolon-logging-log4j2solon.logging.log4j2solon-logging-logbacksolon.logging.logbacksolon-logging-simplesolon.logging.simplesolon-loggingsolon.logging:: nativesolon-aotsolon.aot::netsolon-net-httputilssolon.net.httputilssolon-net-stompsolon-netsolon.net:: schedulingsolon-scheduling-quartzsolon.scheduling.quartzsolon-scheduling-simplesolon.scheduling.simplesolon-schedulingsolon.scheduling:: securitysolon-security-authsolon.auth旧名弃用solon-security-validationsolon.validation旧名弃用solon-security-vaultsolon.vault旧名弃用solon-security-authsolon.security.authsolon-security-validationsolon.security.validationsolon-security-vaultsolon.security.vault:: serializationsolon-serializationsolon.serializationsolon-serialization-fastjsonsolon.serialization.fastjsonsolon-serialization-fastjson2solon.serialization.fastjson2solon-serialization-furysolon.serialization.furysolon-serialization-gsonsolon.serialization.gsonsolon-serialization-hessiansolon.serialization.hessiansolon-serialization-jacksonsolon.serialization.jacksonsolon-serialization-jackson-xmlsolon.serialization.jackson.xmlsolon-serialization-kryo略过(未发布)solon-serialization-propertiessolon.serialization.propertiessolon-serialization-protostuffsolon.serialization.protostuffsolon-serialization-snack3solon.serialization.snack3:: viewsolon-viewsolon.viewsolon-view-beetlsolon.view.beetlsolon-view-enjoysolon.view.enjoysolon-view-freemarkersolon.view.freemarkersolon-view-jspsolon.view.jspsolon-view-jsp-jakarta略过(未发布)solon-view-thymeleafsolon.view.thymeleafsolon-view-velocitysolon.view.velocity:: websolon-sessionstate-jedissolon.sessionstate.jedissolon-sessionstate-jwtsolon.sessionstate.jwtsolon-sessionstate-localsolon.sessionstate.localsolon-sessionstate-redissonsolon.sessionstate.redissonsolon-web-corssolon.web.corssolon-web-rxsolon.web.rxsolon-web-sdlsolon.web.sdlsolon-web-servletsolon.web.servletsolon-web-servlet-jakartasolon.web.servlet.jakartasolon-web-ssesolon.web.ssesolon-web-staticfilessolon.web.staticfilessolon-web-stopsolon.web.stopsolon-web-webdavsolon.web.webdav
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |