一個更現代感的 Java "生態型"應用開發框架:更快、更小、更自由。不是 Spring,沒有 Servlet,也無關 JavaEE;新興獨立的輕量生態 (已有150來個生態外掛) 。主框架僅 0.1 MB。
@Controller
public class App {
public static void main(String[] args) {
Solon.start(App.class, args, app->{
//手寫模式
app.get("/", ctx -> ctx.outputAsJson("{message:'Hello world!'}"))
});
}
//註解模式
@Get
@Socket
@Mapping("/hello")
public String hello(@Param(defaultValue = "java") String name) {
return String.format("Hello %s!", name);
}
}
@Configuration
public class Config {
@Bean(index = -100) //-100,是順序位(低值優先)
public void tokenPathInterceptor() {
return new SaTokenInterceptor()....;
}
}
詳見:https://solon.noear.org/article/110
@Component
public class GlobalTransInterceptor implements RouterInterceptor {
@Inject
private TransService transService;
@Override
public void doIntercept(Context ctx, Handler mainHandler, RouterInterceptorChain chain) throws Throwable {
chain.doIntercept(ctx, mainHandler);
}
@Override
public Object postResult(Context ctx, Object result) throws Throwable {
//此處為攔截處理
if (result != null && !(result instanceof Throwable) && ctx.action() != null) {
result = transService.transOneLoop(result, true);
}
return result;
}
}
詳見:https://solon.noear.org/article/242
solon.serialization.json:
dateAsFormat: 'yyyy-MM-dd HH:mm:ss' #設定日期格式(預設輸出為時間戳)
dateAsTimeZone: 'GMT+8' #設定時區
dateAsTicks: false #將date轉為毫秒數(和 dateAsFormat 二選一)
longAsString: true #將long型轉為字串輸出 (預設為false)
boolAsInt: false #將bool型轉為字串輸出 (預設為false)
nullStringAsEmpty: false
nullBoolAsFalse: false
nullNumberAsZero: false
nullArrayAsEmpty: false
nullAsWriteable: false #輸出所有null值
詳見:https://solon.noear.org/article/94
solon.app.safeStop=1
詳見:https://solon.noear.org/article/412