Solon 是一个微型的Java开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Micro service、WebSocket、Socket 等多种开发模式。
Solon Cloud 是一系列的接口标准和配置规范,算是 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);
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; }
配置:(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(); } }
使用同上
例,配置一个新的日志添加器,指定类名,指定级别:
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()); } }
fastjson
hessian
snack3
okhttp
socketd
jlhttp
http
jetty
jsp
undertow
java-websocket
websocket
session
jwt
redis
json
hession
jackson
protostuff
freemarker
html
velocity
thymeleaf
beetl
enjoy
jdksocket
netty
rsocket
smart-socket
评论删除后,数据将无法恢复
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》
所谓更自由:(代码操控自由)
本次版本主要变化:
1、增加 solon.extend.jsr303 组件,支持 jsr303 bean验证能力
Solon 原有的验证体系是基于 Context 的,基于方法或参数的验证。现在算是补齐了 Bean 或 Model 的验证能力。
2、增加 solon.cache.spymemcached 分布式缓存组件,提供 solon cache 的实现支持
配置:(Solon 的缓存注解,默认是不需要配置缓存服务的。默认会提供本地缓存服务)
代码:
3、增加 solon.cache.jedis 分布式缓存组件
使用同上
4、优化 solon.logging 内部结构,扩展更自由
例,配置一个新的日志添加器,指定类名,指定级别:
定义日志添加器:
附:生态组件清单
fastjson的编解码适配hessian的编解码适配snack3的编解码适配okhttp的通道适配socketd的通道适配(适配后,可使用org.noear:solon.sockted.client.* 做为客户端)jlhttp适配,提供http服务(不自带session state)jetty适配,提供http服务(网友@khb提供)jetty添加jsp支持(不建议使用jsp)(网友@khb提供)undertow适配,提供http服务(网友@tyk提供)java-websocket适配,提供websocket服务undertow添加jsp支持(不建议使用jsp)(网友@tyk提供)session(基于jwt构建)sessionsession(其于redis构建)fastjson适配,提供json视图输出 或 序列化输出snack3适配,提供json视图输出 或 序列化输出hession适配,提供hession序列化输出jackson适配,提供json视图输出 或 序列化输出protostuff适配,提供protostuff视图输出 或 序列化输出freemarker适配,提供html视图输出jsp适配,提供html视图输出velocity适配,提供html视图输出thymeleaf适配,提供html视图输出beetl适配,提供html视图输出enjoy适配,提供html视图输出jdksocket适配,提供socketd服务netty适配,提供socketd服务rsocket适配,提供socketd服务smart-socket适配,提供socketd服务websocket适配,提供socketd服务附:入门示例