Spring Boot 轻量替代框架 Solon 1.3.20 发布
Solon 是一个微型的Java开发框架。项目2018年启动,参考过大量前人作品;内核0.1m的身材,超高的跑分,以及良好的使用体验。支持:RPC、REST API、MVC、WebSocket、Socket 等多种开发模式。
Solon 强调:克制 + 简洁 + 开放的原则;力求:更小、更快、更自由的体验。
替代?那有什么异同之处?
《Solon 特性简集,相较于 Springboot 有什么区别?》
所谓更小:
内核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);
本次版本主要变化:
1、Solon Cloud 增加分布式文件服务定义: CloudFileService
public interface CloudFileService {
InputStream getStream(String bucket, String key) throws CloudFileException;
Result putStream(String bucket, String key, InputStream stream, String streamMime) throws CloudFileException;
InputStream getText(String bucket, String key) throws CloudFileException;
Result putText(String bucket, String key, String text) throws CloudFileException;
...
}
2、Solon Cloud 增加适配组件:aliyun-oss-solon-plugin、aws-s3-solon-plugin(适配 CloudFileService)
以 aliyun-oss-solon-plugin 使用为例:
- 配置:
solon.cloud.aliyun.oss: # 亚马逊则为:solon.cloud.aws.s3
file:
bucket: aaa
endpoint: bbb.xxx.xxx
accessKey: ccc
secretKey: ddd
#可以通过配置服务动态加载,以灵活切换不同的配置
#solon.cloud.water:
# server: water
# config:
# load: xxx_hdfs_cfg
- 代码:
public class DemoService {
public void test() {
String key = "test/" + Utils.guid();
String val = "Hello world!";
//写入数据
Result result = CloudClient.file().putText(key, val);
System.out.println(ONode.stringify(result));
assert result.getCode() == Result.SUCCEED_CODE;
//读取数据
String tmp = CloudClient.file().getText(key);
assert val.equals(tmp);
}
}
3、Solon Cloud 增加适配组件:mqtt-solon-plugin(适配 CloudEventService)
配置示例:
solon.app:
group: demo
name: consumer
solon.cloud.mqtt:
server: "tcp://localhost:41883" #mqtt服务地址
代码示例:
@Controller
public class TestController {
@Mapping("/test")
public Object test(String msg) {
if(Utils.isEmpty(msg)){
msg = "demo2";
}
Event event = new Event("hello.demo", msg).qos(1).retained(true);
return CloudClient.event().publish(event);
}
}
4、增加应用启动事件:AppInitEndEvent
Solon 启动处理顺序:
- 1.实例化 Solon.global() 并加载配置
- 2.加载扩展文件夹
- 3.扫描插件并排序
- 4.运行 initialize 函数
- 5.推送 AppInitEndEvent 事件(新增)
- 6.运行插件
- 7.推送 PluginLoadEndEvent 事件
- 8.导入java bean(@Import)
- 9.扫描并加载java bean
- a.推送 BeanLoadEndEvent 事件
- b.加载渲染印映关系
- c.执行bean加完成事件
- d.推送 AppLoadEndEvent 事件
- e.结束
//订阅示例(通过Solon事件总线提前订阅)
EventBus.subscribe(AppInitEndEvent.class, event->{
System.out.println("app init end...");
});
Solon.start(App.class, args);
5、取消 HandlerLink 类,增加 HandlerPipeline 类
- 此例代码摘自组件 solon.extend.staticfiles :
//切换处理(让静态文件优先)
HandlerPipeline pipeline = new HandlerPipeline();
pipeline.next(new StaticResourceHandler()).next(app.handlerGet());
app.handlerSet(pipeline);
- 此例代码摘自组件 srww.base
SolonServletFilter.onFilterEnd = new HandlerPipeline().next(new BaseLogHandler()).next(new BaseEndHandler());
附:入门示例
- 项目地址:https://gitee.com/noear/solon
- 入门教程示例:https://gitee.com/noear/solon_demo
- RPC入门教程示例:https://gitee.com/noear/solon_rpc_demo
- 进阶教程示例:https://gitee.com/noear/solon_advance_demo
Spring Boot 轻量替代框架 Solon 1.3.20 发布的更多相关文章
- Spring Boot 轻量替代框架 Solon 1.3.15 发布
Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...
- Spring Boot 轻量替代框架 Solon 1.3.18 发布
Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...
- Spring Boot 轻量替代框架 Solon 1.3.29 发布
Solon 是一个微型的Java开发框架.项目2018年启动,参考过大量前人作品:内核0.1m的身材,超高的跑分,以及良好的使用体验.支持:RPC.REST API.MVC.WebSocket.Soc ...
- Spring Boot 轻量替代框架 Solon 的架构笔记
Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...
- Spring Boot 轻量替代框架 Solon 的架构笔记 - new
Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.4.1 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.3.37 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.3.33 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.3.35 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
随机推荐
- mui上拉刷新
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 微信附近的人,用redis也能实现?(GEO)
相信微信附近的人的功能大家都应该用过 我可以很随意的通过我自己的定位能看到我附近的人,并且能看到那个人距离我的距离,大家有没有思考过这个是怎么实现的? 作为一个程序猿任何问题应该都有一个思考的过程,而 ...
- Java ThreadPoolExecutor详解
ThreadPoolExecutor是Java语言对于线程池的实现.池化技术是一种复用资源,减少开销的技术.线程是操作系统的资源,线程的创建与调度由操作系统负责,线程的创建与调度都要耗费大量的资源,其 ...
- Vue为何采用异步渲染
Vue为何采用异步渲染 Vue在更新DOM时是异步执行的,只要侦听到数据变化,Vue将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更,如果同一个watcher被多次触发,只会被推入到队列中一次 ...
- Linux下安装mysql-5.7.28详细步骤
一.下载Mysql 下载地址:https://downloads.mysql.com/archives/community/ 二.环境配置 检测系统是否自带Mysql # rmp -qa|grep m ...
- DOM的理解
https://www.cnblogs.com/djtang/p/11538420.html dom的理解 https://blog.csdn.net/jiuqiyuliang/article/de ...
- Mysql训练:第二高的薪水(IFNULL,OFFSET,LIMIT)
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 ...
- 基于3.X版本的脚手架创建VUE项目
一.基于交互式命令行的方式,创建vue项目 1.命令:vue create 项目名称.项目名称必须是英文的.不要包含中文.特殊的字符和符号.在cmd中输入命令:vue create vue_proje ...
- Lambad表达式--Java8新特性
1.概述 Lambda是一个匿名函数,是java8的一个新特性.可以对接口进行非常简洁的实现.但它要求接口中只能有一个抽象方法,原因是lambda只能实现一个方法.另外,需要在接口上添加注解@Func ...
- Django简单的使用及一些基础方法
目录 一.静态文件配置 1. 什么是静态文件 2. 静态文件的用法 3. 静态文件的动态绑定 二.请求方式与相应 1. get请求 2. post请求 3. Django后端视图函数处理请求 三.re ...