记得之前有人说过想在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);
}打印的效果:
喜欢就点个赞呗~