Solon 是JAVA世界里一個新的極易上手的Web框架。參考過 Javalin 、 Spring 等很多現有框架的設計。
取名自海賊王里的角色,說是希望能像他一樣能打
- 小。真的是小。最小的運行單位只有 0.1m。就算有模板、jdbc、日志放進去。。。估計3-5m就搞定了
- 性能好。Hello world 的qps測試下,基本比 Spring boot 的高近1倍左右
- 簡單便捷。基本和Spring mvc 的體驗接近,入手快。
@XController
public class HelloworldApp {
public static void main(String[] args) {
XApp.start(HelloworldApp.class, args);
}
@XMapping("/")
public String helloworld(){
return "Hello world!";
}
}
是不是很熟悉的感覺?和Springboot mvc體驗很像。
public class HelloworldApp {
public static void main(String[] args) {
XApp app = XApp.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((ctx, err)->{
if(XApp.cfg().isDebugMode()){
err.printStackTrace();
}
})
//多數據源的配置(配置可以注入,也可以直接取)
//
@XConfiguration
public class Config {
@XBean("db1")
public DbContext db1(@XInject("${test.db1}") HikariDataSource dataSource) {
String schema = XApp.cfg().get("test.db1.schema");
return new DbContext(schema, dataSource);
}
@XBean("db2")
public DbContext db2(@XInject("${test.db2}") HikariDataSource dataSource) {
String schema = XApp.cfg().get("test.db2.schema");
return new DbContext(schema, dataSource);
}
}
如果你是個Java程序員,還從來沒有用過Spring-web以外的WEB框架,或許你可以試試Solon!