Maven Central

QQ交流群:22200020 (同时招募项目参与人员:开发者,测试者,网官设计师等...)

solon for java

一个插件式微型Web框架。

支持jdk8+,主框架90kb。组合不同的插件应对不同需求。

  • 采用Handler + Context 架构
  • 实现IOC & AOP容器,支持MVC
  • 支持Http(Serverlet 或 非Serverlet),WebSocket,Socket信号接入
  • 插件可扩展可切换:启动插件,扩展插件,序列化插件,会话状态插件,视图插件(可共存) 等...

Hello world:

```java //Handler 模式: public class App{ public static void main(String[] args){ XApp app = XApp.start(App.class,args);

    app.get("/",(c)->c.output("Hello world!"));
}

}

//Controller 模式: @XController public class App{ public static void main(String[] args){ XApp.start(App.class,args); }

@XMapping("/")
public Object home(XContext c){
    return "Hello world!";  
}

} ```

主框架与插件:

主框架

| 组件 | 说明 | | --- | --- | | org.noear:solon-parent | 框架版本管理 | | org.noear:solon | 主框架 |

快速集成包

| 组件 | 说明 | | --- | --- | | org.noear:solon-mvc | 可进行mvc开发的快速集成包 | | org.noear:solon-api | 可进行api 或 rpc 开发的快速集成包 |

插件

| boot插件 | 说明 | | --- | --- | | org.noear:solon.boot.jdkhttp | boot插件,对JKD自带的HttpServer适配,提供http服务(不自带session state) | | org.noear:solon.boot.jlhttp | boot插件,对jlhttp适配,提供http服务(不自带session state) | | org.noear:solon.boot.nteeyhttp | boot插件,对Netty适配,提供http服务 | | org.noear:solon.boot.jetty | boot插件,对jetty适配,提供http服务(网友@khb提供) | | org.noear:solon.boot.undertow | boot插件,对undertow适配,提供http服务(网友@tyk提供) | | org.noear:solon.boot.smarthttp | boot插件,对smart-http适配,提供http服务(基于AIO实现) | | org.noear:solon.boot.websocket | boot插件,对java-websocket适配,提供websocket服务 | | org.noear:solon.extend.jetty.jsp | 扩展插件,为jetty添加jsp支持(不建议使用jsp)(网友@khb提供) | | org.noear:solon.extend.undertow.jsp | 扩展插件,为undertow添加jsp支持(不建议使用jsp)(网友@tyk提供) |

| 静态文件支持插件 | 说明 | | --- | --- | | org.noear:solon.extend.staticfiles | 扩展插件,添加静态文件支持(监视 resources/static 文件夹) |

| Yaml配置支持插件 | 说明 | | --- | --- | | org.noear:solon.extend.properties.yaml | 扩展插件,添加yml配置文件支持 |

| Session插件 | 说明(可将boot插件的session state服务,自动换掉) | | --- | --- | | org.noear:solon.extend.sessionstate.local | 扩展插件,本地session | | org.noear:solon.extend.sessionstate.redis | 扩展插件,分布式session(其于redis构建) |

| 序列化插件 | 说明 | | --- | --- | | org.noear:solon.serialization.fastjson | 视图插件,对 fastjson 适配,输出json视图 或 序列化输出 | | org.noear:solon.serialization.snack3 | 视图插件,对 snack3 适配,输出json视图 或 序列化输出 | | org.noear:solon.serialization.jackson | 视图插件,对 jackson 适配,输出json视图 或 序列化输出 |

| 视图插件 | 说明(可置多个视图插件) | | --- | --- | | 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 |

| rpc client | 说明 | | --- | --- | | org.noear:solonclient | solon rpc client 与solon 的 rpc service 配对 |

| 外部框架适配 | 说明 | | --- | --- | | org.noear:cron4j-solon-plugin | cron4j 适配插件 | | org.noear:dubbo-solon-plugin | dubbo 适配插件| | org.noear:mybatis-solon-plugin | mybatis 适配插件|

附1:入门示例

  • 微框架示例 ```xml

    org.noear solon.boot.jlhttp 1.0.5.11

java public class App{ public static void main(String[] args){ XApp app = XApp.start(App.class,args);

    //http get 监听
    app.get("/",(c)->c.output("hallo world!"));
}

} * Web 示例(aop,mvc,rpc) xml

 org.noear 
 solon-mvc 
 1.0.5.11

//资源路径说明(不用配置) resources/application.properties(或 application.yml) 为应用配置文件 resources/static/ 为静态文件根目标 resources/WEB-INF/view/ 为视图文件根目标(支持多视图共存)

//模板调试模式(或加热加载模式): 启动参数添加:-deubg=1 java public class App{ public static void main(String[] args){ XApp.start(App.class, args); } }

/* * mvc控制器 */ @XController public class DemoController{ //for http @XMapping("/hallo/{uu}") public ModelAndView hallo(String uu){ return new ModelAndView("hallo"); }

/*
//for web socket (需添加:solon.boot.websocket 插件)
@XMapping(value="/hallo/{u_u}", method = XMethod.SEND)
public ModelAndView hallo_ws(String u_u){
    return new ModelAndView("hallo");
}
*/

}

/* * rpc服务 */ // - interface @XClient("rpc:/demo/") // 或 demorpc (使用water提供的注册服务;当然也可以改成别的...) public interface DemoRpc{ void setName(Integer user_id,String name); }

// - server @XMapping("/demo/*") @XB(remoting = true) public class DemoService implements DemoRpc{ public void setName(Integer user_id,String name){

}

}

// - client - 简单示例 DemoRpc client = new XProxy().upstream(n->"http://127.0.0.1").create(DemoRpc.class); client.setName(1,''); * 获取应用配置 java //非注入模式 XApp.cfg().get("appkey"); //=>String XApp.cfg().getInt("appid",0); //=>int XApp.cfg().getProp("xxx.datasource"); //=>Properties

//注入模式 @XConfiguration //or @XController, or @XBean class xxx{ @XInject("appkey") String appkey; } ```

附2:更多示例可参考 _test 和 _demo

附3:插件开发说明

  • 新建一个 meven 项目
  • 新建一个 java/{包名}/XPluginImp.java (implements XPlugin)
  • 新建一个 resources/solonplugin/{包名.properties}
  • 添加配置:solon.plugin={包名}.XPluginImp

附4:启动顺序参考

  • 1.实例化 XApp.global() 并加载配置
  • 2.加载扩展文件夹
  • 3.扫描插件
  • 4.运行builder函数
  • 5.运行插件
  • 6.扫描并加载java bean
  • 7.加载渲染关系
  • 8.完成
drawio离线版本在线录屏zgrab2 HTTP 模块二次开发 zgrab2 入门教程 同花顺自动化下单源代码 zmap zgrab2 基础教程 投资者入市教程(股票篇)股市相关资料汇总容易记忆密码生成工具沪股股票研究创业板股票研究股票研究中心在线画URM图同花顺自动卖股票drawio优化版本在线工具列表 宝塔批量添加站长统计核心股市策略同花顺自动化买股票在线画商务图
仅提供信息存储空间服务,本网站相关内容来源互联网,如涉及侵权,请联系我们删除[email protected]