当前位置: 首页 > 后端技术 > Java

Solon1.7是一个重要的版本,一个更现代的应用程序开发框架

时间:2023-04-01 14:52:40 Java

与SpringBoot和SpringCloud相比,项目启动速度提高5到10倍qps提高2到3倍Runtime内存节省1/3到1/2打包可以减少到1/2~1/10(比如90Mb变成9Mb)关于SolonSolon是一个更现代的应用程序开发框架,轻量级、开放和生态。支持Web、Data、Job、Remoting、Cloud等任何开发场景。强调约束+简单+开放+生态的原则,力求更小、更少、更快、更自由的体验。目前有近130个生态插件,涵盖了日常开发的各种需求。本次重大更新添加了hasordb-solon-plugin插件@ServicepublicclassDemoService{@Db("db1")JdbcTemplatejdbcTemplate;@Db("db1")LambdaTemplatelambdaTemplate;publicvoidtest(){vardtoList=jdbcTemplate.queryForList("select*fromtest_user",TestUser.class);vardtoList2=lambdaTemplate.lambdaQuery(TestUser.class).queryForList();}}添加solon.cache.redisson插件#完整配置示例demo.cache1:driverType:"redisson"#缓存驱动类型server:"localhost:6379"password:"1234"db:0#默认为0,可以不配置defSeconds:30#默认为30秒,可以不配置//配置缓存服务@ConfigurationpublicclassConfig{//通过CacheServiceSupplier,可以根据driverType自动构建缓存服务@Bean(name="cache2s")publicCacheServicecache2(@Inject("${demo.cache2}")CacheServiceSupplier供应商){returnsupplier.get();}}new添加了solon.sessionstate.redisson插件添加了solon.sessionstate.jedis插件(替换旧的solon.extend.sessionstate.redis)添加solon.sessionstate.local插件(替换旧的solon.extend.sessionstate.local)插件httputils-solon-plugin添加服务上游的检测插件和地址beetlsql-solon-plugin升级beetlsql到3.14.0插件water-solon-plugin升级water为:2.6.2添加ak/sk和多语言包适配插件mybatis-plus-solon-plugin添加对globalConfig插件weed3-solon-的配置支持pluginupgradeweed3to:3.4.25@ServicepublicclassDemoService{@Db("db1")DbContextdb1;publicvoidtest(){vardtoList=db1.table("test_user").limit(10).selectList("*",TestUser.class);}}插件sqltoy-solon-plugin升级sqltoy为:5.1.31添加配置注入支持String值按需转换为object(bean)mybatis.db1:typeAliases:-"demo4031.model"mappers:-"demo4031.dso.mapper"configuration:cacheEnabled:falselogImpl:"org.apache.ibatis.logging.nologging.NoLoggingImpl"globalConfig:metaObjectHandler:"demo4031.dso.MetaObjectHandlerImpl"#NewsupportdbConfig:logicDeleteField:"deleted"添加SolonCloud国际化接口规范@ConfigurationpublicclassDemoConfig{@BeanpublicI18nBundleFactoryi18nBundleFactory(){//将国际化服务切换到云接口returnnewCloudI18nBundleFactory();}}添加SessionStateBase提供会话状态保护基础能力支持添加CloudBreakerService/root配置支持(可支持动态创建)solon.cloud.local:breaker:root:100#Default100(Qps100或semaphore为100;取决于plugin)main:150#这个配置可以放在配置中心,例如:#solon.cloud.water:#server:"waterapi:9371"#config.load:"breaker.yml"添加MethodWrap::getArounds()interfacepublicclassDemoApp{publicstaticvoidmain(String[]args){Solon.start(DemoApp.class,args,app->{//在调试模式下,添加请求环绕拦截器的打印if(Solon.cfg().isDebugMode()){app.after(ctx->{Actionaction=ctx.action();if(action!=null&&action.method().getArounds().size()>0){StringBuilderbuf=newStringBuilder();buf.append("path:").append(ctx.path()).append(":");for(InterceptorEntityie:action.method().getArounds()){buf.append(ie.getReal().getClass().getName()).append(",");}buf.setLength(buf.length()-1);System.out.println(buf);}});}});}}添加NamiBuilder::timeoutinterfaceHelloServicerpc=Nami.builder().url("tcp://localhost:28080/demoe/rpc").encoder(SnackTypeEncoder.instance).timeout(60*60)//unit:second.create(HelloService.class);adjustsession-id-keyconfigurable"server.session.cookieName"#设置session超时秒数(单位:秒)server.session.timeout:3600#设置sessionidcookieeNameserver.session.cookieName:"E52Ou8sV"调整Action::bean()并将其名称更改为controller()publicclassDemoApp{publicstaticvoidmain(String[]args){Solon.start(DemoApp.class,args);//打印所有路由记录中的Controller名称Collection>routings=Solon.global().router().getAll(Endpoint.main);for(Routingrouting:routings){if(routing.target()instanceofAction){动作action=(Action)routing.target();System.out.println(action.controller().name());}}}}调整Gateway内部路由到RoutingTable接口,支持方法(原Map)调整属性注入异常透传机制调整CloudConfigHandler:handlerRename:handle调整CloudDiscoveryHandler:handlerRename:handle调整CloudEventHandler:handlerRename:handle调整CloudEventInterceptor:doInterceptorRename:doInterceptAdjustCloudJobInterceptor:doInterceptorRenameFor:doInterceptsnack3升级:3.2.21redisx升级:1.4.3了解更多Solon《想法与架构笔记》《生态预览》《与 Spring Boot 的区别?》《与 Spring Cloud 的区别?》项目地址gitee:https://gitee.com/noear/solongithub:https://github.com/noear/solon网站:https://solon.noear.org