JFinal使用技巧-路由表Routes启动时控制台打印

记得之前有人说过想在JFinal启动的时候打印一下路由表的信息, 地址和UI地址等, 前两天晚上顺手写了一个简版的, 感觉也没什么luan用... 不过还是分享出来吧, 可能有人会喜欢这个功能的.... 不多说, 上 石马

PrintRoutesKit.java
package com.momathink.common.kit;

import java.util.ArrayList;
import java.util.List;

import com.jfinal.config.Routes;
import com.jfinal.core.Controller;
import com.jfinal.core.JFinal;

/**
 * 路由信息 打印工具(推荐放在最后一个路由位置)
 *
 * @author 杜福忠 2018-11-11 20:59:13
 *
 */
public class PrintRoutesKit {

    public static void println(final Routes firstRoutes) {
        firstRoutes.add(new Routes() {

            private StringBuilder sb;

            @Override
            public void config() {
                if (JFinal.me().getConstants().getDevMode()) {
                    sb = new StringBuilder(512);

                    List<Routes> routesList = getRoutesList();
                    List<Routes> pRoutes = new ArrayList<>(
                            routesList.size() + 1);
                    pRoutes.add(firstRoutes);
                    pRoutes.addAll(routesList);

                    int i = 0;
                    String name;

                    for (Routes routes : pRoutes) {
                        name = routes.getClass().getName();
                        for (Route route : routes.getRouteItemList()) {
                            packaging(name, route.getControllerKey(),
                                    route.getControllerClass(),
                                    route.getFinalViewPath(
                                            routes.getBaseViewPath()));
                            i++;
                        }
                    }
                    println("PrintRoutes总计: " + i);
                    sb = null;
                }
            }

            private void packaging(String name, String controllerKey,
                    Class<? extends Controller> controllerClass,
                    String viewPath) {

                sb.append(name);
                sb.append(" --------------------------\n");
                sb.append("Url         : ").append(controllerKey).append("\n");
                sb.append("Controller  : ").append(controllerClass.getName())
                .append(".(").append(controllerClass.getSimpleName())
                .append(".java:1)\n");
                sb.append("View        : ").append(viewPath);
                sb.append("\n");

                println(sb.toString());
                sb.setLength(0);
            }

            private void println(String string) {
                System.out.println(string);
            }

        });
    }

}

使用方式:

/**
     * 配置路由表
     */
    @Override
    public void configRoute(Routes me) {
        // 加自己的 路由表
        me.add(....);
        //....
        
        // 最后一行加入打印路由表功能, 否则只能打印它前面的
        PrintRoutesKit.println(me);
    }

打印的效果:
微信截图_20181115115013.png喜欢就点个赞呗~

评论区

杜福忠

2018-11-15 11:59

想起来了.. 对喜欢用扫描Controller路径的玩家还是有点作用的...

ddjfinal

2018-12-07 15:05

@杜福忠 有个卵用,路由配置类是用来干嘛的啊,还不够清晰吗

杜福忠

2018-12-07 18:42

@ddjfinal 是的, 你说的对, 我也是这么觉得的

热门分享

扫码入社