我想基于某些事件动态创建,装载和卸载io.vertx.ext.web.Router
。
使用Router::router
和Router::mountSubRouter
创建新路由器并安装它是没问题的。每个创建的子路由器都将添加到java.util.Map
,以便稍后可以获取它们,因为无法查询根Router
以查找子路由器。
Howerver Router
不提供卸载子路由器的功能。我可以在子路由器上使用Router::clear
来删除它的所有路由,但是想知道是否有更好的方法来卸载子路由器。
答案 0 :(得分:2)
试试这个:
public static void unMountSubRouter(Router router, String root) {
router.getRoutes().stream()
.filter(route -> route.getPath() != null && route.getPath().startsWith(root))
.forEach(route -> route.remove());
}