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服务)

附:项目地址

附:入门示例

Spring Boot & Cloud 轻量替代框架 Solon 1.3.37 发布的更多相关文章

  1. Spring Boot & Cloud 轻量替代框架 Solon 1.4.1 发布

    Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...

  2. Spring Boot & Cloud 轻量替代框架 Solon 1.3.33 发布

    Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...

  3. Spring Boot & Cloud 轻量替代框架 Solon 1.3.35 发布

    Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...

  4. Spring Boot 轻量替代框架 Solon 1.3.15 发布

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

  5. Spring Boot 轻量替代框架 Solon 1.3.18 发布

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

  6. Spring Boot 轻量替代框架 Solon 1.3.20 发布

    Solon 是一个微型的Java开发框架.项目2018年启动,参考过大量前人作品:内核0.1m的身材,超高的跑分,以及良好的使用体验.支持:RPC.REST API.MVC.WebSocket.Soc ...

  7. Spring Boot 轻量替代框架 Solon 1.3.29 发布

    Solon 是一个微型的Java开发框架.项目2018年启动,参考过大量前人作品:内核0.1m的身材,超高的跑分,以及良好的使用体验.支持:RPC.REST API.MVC.WebSocket.Soc ...

  8. Springboot 轻量替代框架 Solon 1.3.10 发布

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

  9. Spring Boot 轻量替代框架 Solon 的架构笔记

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

随机推荐

  1. 配置docker的pdflatex环境

    技术背景 Latex在文档撰写方面是不可或缺的工具,尤其是在写文章方面,是必须要用到的文字排版工具.但是latex的环境部署并不是一个特别人性化的操作,尤其是在各种不同的平台上操作是完全不一样的,还经 ...

  2. Scrapy 5+1 ——五大坑附送一个小技巧

    笔者最近对scrapy的学习可谓如火如荼,虽然但是,即使是一整天地学习下来也会有中间两三个小时的"无效学习",不是笔者开小差,而是掉进了深坑出不来. 在此,给各位分享一下作为一名S ...

  3. python基础(三):元组

    什么是元组 有时候你需要创建一系列不可修改的元素,元组可以满足这种需求.Python将不能修改的值称为不可变的,而不可变的列表被称为元组. 元组的定义和访问 元组使用圆括号来定义,我们已经知道:元组也 ...

  4. OO_Unit3总结

    OO_Unit3总结 一.JML情况 理论基础 JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言,为严格的程序设计提供了一套行之有效的方法.通过J ...

  5. HMS Toolkit自动化环境配置,助您高效集成HMS Core

    HMS Toolkit是一个IDE插件,提供包括应用创建.编码和转换.调测和测试.提交上架等多个端到端开发工具,借助HMS Toolkit可提升3倍以上集成开发效率,可以帮助开发者以更高的开发效率.更 ...

  6. inline&register

    inline关键字: 内联只是一个请求,不代表编译器会响应:同时某些编译器会将一些函数优化成为内联函数. C++在类内定义的函数默认是内联函数,具体是否真变成内联函数还需看编译器本身. registe ...

  7. manjaro配置攻略

    2021.1.30 更新 1 概述 本文主要讲述了新安装的Manjaro一些常用的配置,包括源.常用软件.快捷键.终端以及一些效率工具的配置. 2 pacman源 首先是pacman源的选择: sud ...

  8. 0802_转载-nn模块中的网络层介绍

    0802_转载-nn 模块中的网络层介绍 目录 一.写在前面 二.卷积运算与卷积层 2.1 1d 2d 3d 卷积示意 2.2 nn.Conv2d 2.3 转置卷积 三.池化层 四.线性层 五.激活函 ...

  9. JDBC_15_悲观锁和乐观锁

    悲观锁和乐观锁 并发控制 当程序中可能出现并发操作的情况时,就需要保证在并发操作的情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和某个用户单独操作时的结果是一样的.这种手段就叫 ...

  10. ASP.NET Core扩展库之Http请求模拟

    如今,完全独立的业务应用几乎不存在,不管是在企业内部微服务之间的调用,还是与外部第三方服务的调用,Http的API交互是常见的场景,这些实际情况给我们的开发带来了比较大的挑战,一是第三方服务可能会牵制 ...