- 1.实现boot(*类似spring boot)
- 2.实现微框架(*类似javalin)
- 3.实现mvc(*类似spring mvc)
- 4.实现rpc(*类似dobbo)
- 5.实现微服务架构(结合water治理平台)//此项目不涉及
- 1.XApp,管理总线,所有内容都交汇于此
- 2.XPlugin,通用插件接口
- 3.XRender,通用渲染接口
- 4.XContext,通用上下文接口
- 5.XHandler,通用处理接口
- 6.XAction***,通用动作接口(XHandler+XRender)
- 7.XBean***,轻量级bean体系
注解主要分为:普通、特定、附助三类注解,实动时会被加载;原则上,只被应用在启动时。。。其它注解可借助lombok框架。
- 普通bean注解:XBean,令可加注在类上
- 特定web bean注解:需配置-parameters
XController(WEB控制者),加注@XMapping的公有函数为XAction
XInterceptor(WEB拦截者),加注@XMapping的公有函数为XAction
XService(WEB服务者),所有公有函数为XAction - 特定web bean 的附助注解:
XMapping:印射注解,支持path var。可注解到web bean或XAction或XHandler
XAfter:后置处理注解。可注解到web bean或XAction
XBefore:前置处理注解。可注解到web bean或XAction
组件说明 maven-central v1.0.2
组件 | 说明 |
---|---|
org.noear:solon:1.0.2.1 | 48k,主框架 |
org.noear:solon.boot.jlhttp:1.0.2 | 58k,boot插件,对jlhttp适配(不支持session) |
org.noear:solon.boot.jetty:1.0.2 | 1.5m,boot插件,对jetty适配 |
org.noear:solon.boot.smartsocket | *.*m,boot插件,提供socket服务(未提交仓库) |
org.noear:solon.boot.websocket | *.*m,boot插件,提供websocket服务(未提交仓库) |
org.noear:solon.boot.jetty:1.0.2 | 1.5m,boot插件,对jetty适配 |
org.noear:solon.boot.jetty:1.0.2 | 1.5m,boot插件,对jetty适配 |
org.noear:solon.extend.jetty.jsp:1.0.2 | 6m,扩展插件,为jetty添加jsp支持 |
org.noear:solon.extend.staticfiles:1.0.2 | 8k,扩展插件,添加静态文件支持 |
org.noear:solon.view.fastjson:1.0.2 | 0.5m,视图插件,对 fastjson 适配,输出json视图 |
org.noear:solon.view.freemarker:1.0.2 | 2.0m,视图插件,对 fastjson 和 freemarker 适配,输出json或html |
org.noear:solon.view.jsp:1.0.2 | 0.5m,视图插件,对 fastjson 和 jsp 适配,输出json或html |
org.noear:solon.view.velocity:1.0.2 | 1.4m,视图插件,对 fastjson 和 velocity 适配,输出json或html |
org.noear:solon.view.beetl:1.0.2 | 1.3m,视图插件,对 fastjson 和 beetl 适配,输出json或html |
org.noear:solon.view.enjoy:1.0.2 | 0.7m,视图插件,对 fastjson 和 enjoy 适配,输出json或html |
org.noear:solonclient:1.0.2 | 11k,rpc client 框架,与solon 的 rpc service 配对 |
- 微框架示例
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon</artifactId>
<version>1.0.2.1</version>
</dependency>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.boot.jlhttp</artifactId><!-- 可以换成:.jetty 或自己定义个插件 -->
<version>1.0.2</version>
</dependency>
public class App{
public static void main(String[] args){
XApp app = XApp.start(App.class,args);
app.get("/hallo",(c)->c.output("hallo world!"));
}
}
- Web 示例(aop,mvc,rpc)
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.boot.jlhttp</artifactId> <!-- 可以换成:.jetty 或自己定义个插件 -->
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.view.freemarker</artifactId> <!-- 可以换成:.velocity 或 .jsp 或自己定义个插件 -->
<version>1.0.2</version>
</dependency>
//资源路径说明
resources/application.properties 为应用配置文件
resources/static/ 为静态文件根目标
resources/WEB-INF/view/ 为视图文件根目标 (把视图放数据库里也成...自己适配下)
public class App{
public static void main(String[] args){
XApp.start(App.class,args);
}
}
/*mvc控制器*/
@XController
public class DemoController{
@XMapping("/hallo/{u_u}")
public ModelAndView hallo(String u_u){
return new ModelAndView("hallo");
}
}
/*rpc服务*/
// - interface
@XClient("http://127.0.0.1/demo/") // 或 demorpc (使用water提供的注册服务;当然也可以改成别的...)
public interface DemoRpc{
void setName(Integer user_id,String name);
}
// - server
@XMapping("/demo/*")
@XService(remoting = true)
public class DemoService implements DemoRpc{
public void setName(Integer user_id,String name){
}
}
// - client - 简单示例
DemoRpc client = new XProxy().create(DemoRpc.class); //@XClient("http://127.0.0.1/demo/")
client.setName(1,'');
// - client - 使用WATER负载示例 (可以自己写个别的负载)
DemoRpc client = XWaterUpstream.xclient(DemoRpc.class); //@XClient("demorpc")
client.setName(1,'');
- 获取应用配置
Aop.prop().get("app_key"); //=>String
Aop.prop().getInt("app_id",0); //=>int
Aop.prop().getProp("xxx.datasource"); //=>Properties