Solon v2.7.5

六、SolonApp 的实例与接口

</> markdown

SolonApp 是框架的核心对象,也是应用生命周期的主体。一般通过 Solon.start(...) 产生,通过 Solon.app() 获取:

@SolonMain
public class DemoApp{
    public static void main(String[] args){
        //可以在 start() 返回得到它
        SolonApp app = Solon.start(DemoApp.class, args, app->{
          //或者,可以通初始化函数获得它
        });
    }
}

//最重要的是:start() 后,通过全局实例得到它(为手动开发提供便利):
Solon.app();

启动并阻塞(一般用不到):

@SolonMain
public class DemoApp{
    public static void main(String[] args){
        Solon.start(DemoApp.class, args).block();
    }
}

提醒:原则上 Solon.start(..) 在一个程序里,只能执行一次。

1、了解路由接口(为手动控制提供支持)

Solon 的路由,可以为 http, websocket, socket 通讯服务。也可以用于非通讯场景。

成员说明备注
filter(?)添加过滤器
routerInterceptor(?)添加路由拦截器v1.12.2 后支持
before(?)添加前置处理
get(?)添加 get 主处理
post(?)添加 post 主处理
put(?)添加 put 主处理
patch(?)添加 patch 主处理
...添加 ... 主处理主处理有很多
after(?)添加后置处理

提示:可以通过 《请求处理过程示意图》,了解各接口的作用位置。

2、几个重要的成员

成员说明备注
通过 Solon.app() 可获取当前实例
context()->AppContext应用上下文(Bean 容器)通过 Solon.context() 可快捷获取
cfg()->SolonProps应用属性或配置通过 Solon.cfg() 可快捷获取
classLoader()应用类加载器
source()应用启动源(或入口类)
shared()应用共享变量会同步到一些插件(比如视图模板)
sharedAdd(k,v)应用共享变量添加
sharedGet(k,callback)应用共享变量获取支持订阅模式
router()应用路由器一般不直接使用
chainManager()应用链路管理器一般不直接使用
converterManager()应用转换管理器一般不直接使用
factoryManager()应用工厂管理器一般不直接使用

3、几个重要的开关

成员说明备注
enableHttp(?)启用http通讯
enableWebSocket(?)启用web socket通讯
enableSocketD(?)启用socket通讯的D协议
enableTransaction(?)启用事务能力
enableCaching(?)启用缓存能力
enableStaticfiles(?)启用静态文件能力
enableSessionState(?)启用会话状态能力