又一个小而美的Java 开发框架: Solon 1.2 新篇
Solon 1.2 发布后,取消了X类名前缀。故对此文做些调整。
Solon 是Java世界里一个新的极易上手的Java开发框架。参考过 Javalin 、 Spring boot 等很多现有框架的设计。
取名自海贼王里的角色“索隆”,说是希望能像他一样能打
- 小。真的是小。最小的Http运行单位只有 0.1m。就算有模板、jdbc、日志放进去。。。估计2m-5m就搞定了
- 性能好。Hello world 的qps测试下,基本比 Spring boot 的高近1倍左右
- 简单便捷。基本和Spring mvc 的体验接近,入手快。
官方支持的jdk版本为:8.0 - 15。已发布的基本都支持......
@Controller
public class HelloworldApp {
public static void main(String[] args) {
Solon.start(HelloworldApp.class, args);
}
@Mapping("/")
public String helloworld(){
return "Hello world!";
}
}
是不是很熟悉的感觉?和Spring boot mvc体验很像。
public class HelloworldApp {
public static void main(String[] args) {
SolonApp app = Solon.start(HelloworldApp.class, args);
var map = new HashMap<String, Integer>();
map.put("val1", 1);
map.put("val2", 2);
app.get("/", ctx -> ctx.output("Hello World"));
app.get("/json/map", ctx -> ctx.render(map));
app.after("**", ctx -> {
System.out.println("log::");
System.out.println(ctx.attr("output", ""));
});
}
}
是不是非常简单的感觉。以上两种可以混用的。。。尤其是要加一个后置处理,真的方便。再放点代码:
//启动参数加-debug=1 ,打印所有异常
//
app.onError((err)->{
if(Solon.cfg().isDebugMode()){
err.printStackTrace();
}
})
//多数据源的配置(配置可以注入,也可以直接取)
//
@Configuration
public class Config {
@Bean("db1")
public DataSource db1(@Inject("${test.db1}") HikariDataSource dataSource) {
return dataSource;
}
@Bean("db2")
public DataSource db2(@Inject("${test.db2}") HikariDataSource dataSource) {
return dataSource;
}
}
如果你是个Java程序员,还从来没有用过Spring-web以外的WEB框架,或许你可以试试Solon!
附:Solon项目地址
- Gitee: https://gitee.com/noear/solon
- Github: https://github.com/noear/solon
又一个小而美的Java 开发框架: Solon 1.2 新篇的更多相关文章
- 又一个小而美的Java Web框架: Solon!
Solon 是Java世界里一个新的极易上手的Web框架.参考过 Javalin . Spring 等很多现有框架的设计. 取名自海贼王里的角色,说是希能像他一样能打 小.真的是小.最小的运行单位只有 ...
- 不妨试试更快更小更灵活Java开发框架Solon
@ 目录 概述 定义 性能 架构 实战 Solon Web示例 Solon Mybatis-Plus示例 Solon WebSocket示例 Solon Remoting RPC示例 Solon Cl ...
- 轻量级的Java 开发框架 Spring
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development a ...
- BuguMongo是一个MongoDB Java开发框架,集成了DAO、Query、Lucene、GridFS等功能
http://code.google.com/p/bugumongo/ 简介 BuguMongo是一个MongoDB Java开发框架,它的主要功能包括: 基于注解的对象-文档映射(Object-Do ...
- Solon,一个轻量级的应用开发框架。发布官网喽!!!
官网发布: https://solon.noear.org/ 项目简介: Solon,是一个轻量级的应用开发框架.更快.更小.更自由! 支持JDK8+:主框架0.1Mb:组合不同的插件应对不同需求:方 ...
- Prism for WPF 搭建一个简单的模块化开发框架(五)添加聊天、消息模块
原文:Prism for WPF 搭建一个简单的模块化开发框架(五)添加聊天.消息模块 中秋节假期没事继续搞了搞 做了各聊天的模块,需要继续优化 第一步画页面 页面参考https://github.c ...
- 教你打造一个Android组件化开发框架
*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 CC:Component Caller,一个android组件化开发框架, 已开源,github地址:https://github ...
- Linux环境下部署完JDK后运行一个简单的Java程序
前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version&qu ...
- 一个简单的Java web服务器实现
前言 一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现: 程序执行步骤 创建一个ServerSocket对象: 调用S ...
随机推荐
- 零钱问题的动态规划解法——用 n 种不同币值的硬币凑出 m 元,最少需要多少硬币。
输入格式:第一行输入需要凑的钱数 m 和硬币的种类 n (0<m<100,0<n<10),第二行输入 n 种硬币的具体币值,假设硬币供应量无限多. 输出格式:输出最少需要的硬币 ...
- 数据库原理-事务隔离与多版本并发控制(MVCC)
刚来美团实习,正好是星期天,不得不说,其内部的资料很丰富,看了部分文档后,对数据库事务这块更理解了.数据库事务的ACID,大家都知道,为了维护这些性质,主要是隔离性和一致性,一般使用加锁这种方式.同时 ...
- springsecurity+springsocial资料收集
https://blog.csdn.net/tryandfight/article/details/80524573 https://niocoder.com/2018/01/09/Spring-Se ...
- Python运算符的优先级是怎样的?
优先级数字越高表示优先级越高,有关运算符的详细介绍请参考<Python运算符大全>
- 第15.14节 PyQt(Python+Qt)入门学习:Designer的Buttons按钮详解
一.引言 Qt Designer中的Buttons部件包括Push Button(常规按钮.一般称按钮).Tool Button(工具按钮).Radio Button(单选按钮).Check Box( ...
- 混合云存储打开的正确姿势——腾讯云存储网关 CSG
近年来,随着云计算的发展,越来越多的企业选择将IT系统基础设施转移到云上,上云有助于推动企业加快信息化.数字化.智能化的转型,但是很多企业对传统的业务系统依赖程度较高,短时间内将业务迁移上云将会面临很 ...
- 移动端点击300ms延迟问题
移动端点击延迟事件 1. 移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟 2. 原因: 移动端的双击会缩放导致click判断延迟 解决方式 1. 禁用缩放 `<meta nam ...
- 【题解】「P6832」[Cnoi2020]子弦
[题解]「P6832」[Cnoi2020]子弦第一次写月赛题解( 首先第一眼看到这题,怎么感觉要用 \(\texttt{SAM}\) 什么高科技的?结果一仔细读题,简单模拟即可. 我们不难想出,出现最 ...
- 四、git学习之——分支管理、解决冲突
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...
- tornado 作业 自定义模板 UIMethod以UIModule
自定义uimodule s3.py import tornado.ioloop import tornado.web import UIMethod as mt class MainHandler(t ...