Solon 是一個更現代感的應用開發框架,輕量、開放生態型的。支援 Web、Data、Job、Remoting、Cloud 等任何開發場景。
目前有近130個生態外掛,含蓋了日常開發的各種需求:
public class DemoApp {
public static void main(String[] args) {
Solon.start(App.class, args, app -> {
//新增待管理的外掛
PluginManager.add("add1", "/x/x/x.jar");
PluginManager.add("add2", "/x/x/x2.jar");
app.get("start", ctx -> {
//啟動外掛
PluginManager.start("add1");
ctx.output("OK");
});
app.get("stop", ctx -> {
//停止外掛
PluginManager.stop("add1");
ctx.output("OK");
});
});
}
}
更多介紹看官網的:solon.extend.hotplug
public class Plugin1Impl implements Plugin {
@Override
public void start(AopContext context) {
//通過當前上下文掃描,具有隔離性
context.beanScan(Plugin1Impl.class);
context.beanOnloaded(ctx->{
//回撥有上下文資訊,方便做多外掛可複用的設計
});
}
}
@Controller
public class DemoController {
/**
* 執行結果快取10秒,使用 key=test_${label} 並新增 test 標籤
* */
@Cache(key="test_${label}", tags = "test" , seconds = 10)
@Mapping("/cache/")
public Object test(int label) {
return new Date();
}
/**
* 執行後,清除 標籤為 test 的所有快取
* */
@CacheRemove(tags = "test")
@Mapping("/cache/clear")
public String clear() {
return "清除成功(其實無效)-" + new Date();
}
/**
* 執行後,更新 key=test_${label} 的快取
* */
@CachePut(key = "test_${label}")
@Mapping("/cache/clear2")
public Object clear2(int label) {
return new Date();
}
}
@Mapping("/api/v3/app/**")
@Component
public class ApiGatewayV3 extends UapiGateway {
@Override
protected void register() {
filter(new BreakerFilter()); //融斷
before(new StartHandler()); //開始計時
before(new ParamsParseHandler()); //引數解析
before(new ParamsSignCheckHandler(new Md5Encoder())); //引數簽名較驗
before(new ParamsRebuildHandler(new AesDecoder())); //引數重構
after(new OutputBuildHandler(new AesEncoder())); //輸出構建
after(new OutputSignHandler(new Md5Encoder())); //輸出簽名
after(new OutputHandler()); //輸出
after(new EndBeforeLogHandler()); //紀錄檔
after(new EndHandler("v3.api.app")); //結束計時
//新增一批具體的介面處理Bean
addBeans(bw -> "api".equals(bw.tag()));
}
}