Spring Boot & Cloud 轻量替代框架 Solon 1.3.37 发布
Solon 是一个微型的Java开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Micro service、WebSocket、Socket 等多种开发模式。 Solon Cloud 是一系列的接口标准和配置规范,算是 Solon 的分布式开发套件方案。 快速了解Solon的材料: 《Solon 特性简集,相较于 Springboot 有什么区别?》 《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》 《Solon 的想法与架构笔记》 《Solon 框架入门》 所谓更小: 内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计) 所谓更快: 本机http helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); //手动获取一个RPC服务消费端 HelloService helloService = Nami.builder().create(HelloService.class); //手动为容器添加组件 Aop.wrapAndPut(DemoService.class); 本次版本主要变化: 1、增加 solon.extend.jsr303 组件,支持 jsr303 bean验证能力 Solon 原有的验证体系是基于 Context 的,基于方法或参数的验证。现在算是补齐了 Bean 或 Model 的验证能力。 @Valid @Controller public class ValidController { //这是基于 context 的验证体系(可以批量验证参数) @NotZero({"val1", "val2"}) @Mapping("nzero") public String nzero(int val1, int val2) { return "OK"; } //这也是基于 context 的验证体系 @Mapping("size") public String size(@Length(min = 2, max = 5, message = "测试") String val1, @Length(min = 2, max = 5, message = "测试") String val2) { return "OK"; } //这是基于 bean 的验证体系(@Validated,这个注解加上代表要验证这个模型参数) @Mapping("bean") public String bean(@Validated ValidModel model) { return "OK"; } } //申明可验证的模型 @Data public class ValidModel { @NotBlank(message = "手机号不能为空") private String mobile; @NotBlank(message = "密码不能为空") private String password; } 2、增加 solon.cache.spymemcached 分布式缓存组件,提供 solon cache 的实现支持 配置:(Solon 的缓存注解,默认是不需要配置缓存服务的。默认会提供本地缓存服务) solon.app: name: demoapp group: demo cache1: server: memcached.water.io:11211 #具体需要哪些配置,可以看下 MemCacheService 的类实现 user: memcached 代码: //组件配置 @Configuration public class Config { @Bean public CacheService cache(@Inject("${cache1}") MemCacheService cache){ return cache; } } //使用 @Controller public class CacheController { /** * 执行结果缓存10秒,并添加 test_${label} 和 test1 标签 * */ @Cache(tags = "test_${label},test1" , seconds = 60) @Mapping("/cache/") public Date test(int label) { return new Date(); } /** * 执行后,清除 标签为 test 的缓存(不过,目前没有 test 的示签...) * */ @CachePut(tags = "test1") @Mapping("/cache/update") public Date update() { return new Date(); } /** * 执行后,清除 标签为 test_${label} 的缓存 * */ @CacheRemove(tags = "test_${label}") @Mapping("/cache/remove") public String remove(int label) { return "清除成功-" + new Date(); } } 3、增加 solon.cache.jedis 分布式缓存组件 使用同上 4、优化 solon.logging 内部结构,扩展更自由 例,配置一个新的日志添加器,指定类名,指定级别: solon.logging.appender: test: class: demo.TestAppender level: TRACE 定义日志添加器: public class TestAppender extends AppenderBase { @Override public void append(LogEvent logEvent) { System.out.println("[Test] " + logEvent.getContent()); } } 附:生态组件清单 Nami 插件(Solon rpc client) 说明 nami插件:: 说明 nami.coder.fastjson 对fastjson的编解码适配 nami.coder.hessian 对hessian的编解码适配 nami.coder.snack3 对snack3的编解码适配 nami.channel.http.okhttp 对okhttp的通道适配 nami.channel.socketd 对socketd的通道适配(适配后,可使用org.noear:solon.sockted.client.* 做为客户端) Solon 插件 说明 boot插件:: 说明 org.noear:solon.boot.jlhttp* boot插件,对jlhttp适配,提供http服务(不自带session state) org.noear:solon.boot.jetty* boot插件,对jetty适配,提供http服务(网友@khb提供) org.noear:solon.extend.jetty.jsp 扩展插件,为jetty添加jsp支持(不建议使用jsp)(网友@khb提供) org.noear:solon.boot.undertow* boot插件,对undertow适配,提供http服务(网友@tyk提供) org.noear:solon.boot.websocket boot插件,对java-websocket适配,提供websocket服务 org.noear:solon.extend.undertow.jsp 扩展插件,为undertow添加jsp支持(不建议使用jsp)(网友@tyk提供) 静态文件支持插件:: 说明 org.noear:solon.extend.staticfiles 扩展插件,添加静态文件支持(监视 resources/static 文件夹) 切面支持插件:: 说明 org.noear:solon.extend.aspect 扩展插件,添加Dao、Service注解支持;进而支持事务和缓存注解 数据操作支持插件:: 说明 org.noear:solon.extend.data 扩展插件,实现事务和缓存的注解支持 验证支持插件:: 说明 org.noear:solon.extend.validation 扩展插件,实现验证的注解支持 Yaml配置支持插件:: 说明 org.noear:solon.extend.properties.yaml 扩展插件,添加yml配置文件支持 Data插件:: 说明 org.noear:solon.extend.data 扩展插件,添加事件(@Tran)、缓存(@Cache)支持 Cloud插件:: 说明 org.noear:solon.cloud 扩展插件, 添加Solon Cloud 的接口定义及配置规范 Validation插件:: 说明 org.noear:solon.extend.validation 扩展插件,添加验证(@Valid)支持 Cache插件:: 说明 org.noear:solon.cache.spymemcached 扩展插件,完成memcached的缓存服务适配 org.noear:solon.solon.cache.jedis 扩展插件,完成redis的缓存服务适配 jsr插件:: 说明 org.noear:solon.extend.jsr303 扩展插件,完成jsr303 bean 验证支持 org.noear:solon.extend.jsr330 扩展插件,完成jsr330 组件与注入支持 跨域插件:: 说明 org.noear:solon.extend.cors 扩展插件,完成web跨域注解支持 Session插件:: 说明(可将boot插件的session state服务,自动换掉) org.noear:solon.extend.sessionstate.jwt 扩展插件,分布式session(基于jwt构建) org.noear:solon.extend.sessionstate.local 扩展插件,本地session org.noear:solon.extend.sessionstate.redis 扩展插件,分布式session(其于redis构建) 日志插件:: 说明 org.noear:solon.logging 扩展插件,添加日志支持 org.noear:solon.logging.impl 扩展插件,添加Slf4j日志支持 序列化插件:: 说明 org.noear:solon.serialization.fastjson* 序列化插件,对fastjson适配,提供json视图输出 或 序列化输出 org.noear:solon.serialization.snack3* 序列化插件,对snack3适配,提供json视图输出 或 序列化输出 org.noear:solon.serialization.hession* 序列化插件,对hession适配,提供hession序列化输出 org.noear:solon.serialization.jackson 序列化插件,对jackson适配,提供json视图输出 或 序列化输出 org.noear:solon.serialization.protostuff 序列化插件,对protostuff适配,提供protostuff视图输出 或 序列化输出 视图插件:: 说明(可置多个视图插件) org.noear:solon.view.freemarker* 视图插件,对freemarker适配,提供html视图输出 org.noear:solon.view.jsp 视图插件,对jsp适配,提供html视图输出 org.noear:solon.view.velocity 视图插件,对velocity适配,提供html视图输出 org.noear:solon.view.thymeleaf 视图插件,对thymeleaf适配,提供html视图输出 org.noear:solon.view.beetl 视图插件,对beetl适配,提供html视图输出 org.noear:solon.view.enjoy 视图插件,对enjoy适配,提供html视图输出 Solon SocketD 插件 说明 SocketD boot插件:: 说明 org.noear:solon.boot.socketd.jdksocket sockted boot插件,对jdksocket适配,提供socketd服务 org.noear:solon.boot.socketd.netty sockted boot插件,对netty适配,提供socketd服务 org.noear:solon.boot.socketd.rsocket sockted boot插件,对rsocket适配,提供socketd服务 org.noear:solon.boot.socketd.smartsocket sockted boot插件,对smart-socket适配,提供socketd服务 org.noear:solon.boot.socketd.websocket sockted boot插件,对websocket适配,提供socketd服务 SocketD client 插件:: 说明 org.noear:solon.sockted 扩展插件,sockted 协议的编解码、会话等基础支持 org.noear:solon.sockted.client.jdksocket 扩展插件,sockted 协议的 jdksocket 客户端适配 org.noear:solon.sockted.client.netty 扩展插件,sockted 协议的 netty 客户端适配 org.noear:solon.sockted.smartsocket 扩展插件,sockted 协议的 smartsocket 客户端适配 org.noear:solon.sockted.websocket 扩展插件,sockted 协议的 websocket 客户端适配 其它扩展插件 说明 org.noear:beetlsql-solon-plugin beetlsql 适配插件 org.noear:mybatis-solon-plugin mybatis 适配插件 org.noear:mybatis-sqlhelper-solon-plugin mybatis-sqlhelper 适配插件 org.noear:weed3-solon-plugin weed3 适配插件 org.noear:cron4j-solon-plugin cron4j 适配插件 org.noear:quartz-solon-plugin quartz 适配插件 org.noear:dubbo-solon-plugin dubbo 适配插件 org.noear:feign-solon-plugin feign 适配插件 org.noear:hasor-solon-plugin hasor 适配插件 org.noear:luffy-solon-plugin luffy 适配插件 org.noear:sureness-solon-plugin sureness 适配插件 org.noear:solon-springboot-starter springboot 适配插件 Solon Cloud 插件 说明 org.noear:consul-solon-plugin consul 适配插件(支持Solon cloud 配置服务、注册与发现服务) org.noear:nacos-solon-plugin nacos 适配插件(支持Solon cloud 配置服务、注册与发现服务) org.noear:zookeeper-solon-plugin zookeeper 适配插件(支持Solon cloud 配置服务、注册与发现服务) org.noear:water-solon-plugin water 适配插件(支持Solon cloud 配置、注册与发现、事件、日志、跟踪、等服务) org.noear:rabbitmq-solon-plugin rabbitmq 适配插件(支持Solon cloud 事件总线服务) org.noear:rocketmq-solon-plugin rocketmq 适配插件(支持Solon cloud 事件总线服务) org.noear:mqtt-solon-plugin mqtt 适配插件(支持Solon cloud 事件总线服务) org.noear:kafka-solon-plugin kafka 适配插件(支持Solon cloud 事件总线服务) org.noear:guava-solon-plugin guava 适配插件(支持Solon cloud 融断服务) org.noear:sentinel-solon-plugin sentinel 适配插件(支持Solon cloud 融断服务) org.noear:semaphore-solon-plugin semaphore 适配插件(支持Solon cloud 融断服务) org.noear:aliyun-oss-solon-plugin aliyun-oss 适配插件(支持Solon cloud 分布式文件服务) org.noear:aws-s3-solon-plugin aws-s3 适配插件(支持Solon cloud 分布式文件服务) org.noear:snowflake-id-solon-plugin snowflake 算法适配插件(支持Solon cloud 分布式ID服务) 附:入门示例 Solon 入门教程示例:https://gitee.com/noear/solon_demo Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo