Solon v3.6.2

SolonApp 的实例与接口

</> markdown

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

import org.noear.solon.Solon;
import org.noear.solon.SolonApp;
import org.noear.solon.annotation.SolonMain;

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

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

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

import org.noear.solon.Solon;
import org.noear.solon.annotation.SolonMain;

@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 后支持
get(?)添加 get 处理
post(?)添加 post 处理
put(?)添加 put 处理
patch(?)添加 patch 处理
...添加 ... 处理方法处理有很多

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

2、几个重要的成员

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

3、几个重要的开关

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

例如:

import org.noear.solon.Solon;
import org.noear.solon.annotation.SolonMain;

@SolonMain
public class DemoApp{
    public static void main(String[] args){
        Solon.start(DemoApp.class, args, app->{
          app.enableSessionState(false);
        });
    }
}