Spring Boot 获取所有 SpringMVC Controller 路径
Spring Boot SpringMVC RBAC 大约 3445 字使用场景
在使用RBAC
权限管理时,往往需要添加后端API
接口路径,可以使用此方法获取Spring Boot
中定义的所有Controller
路径。
RequestMapping
中配置的value
字段为url
路径,name
字段可以为接口的注释。
获取自定义路径
@SpringBootApplication
public class GetAllControllerPathApplication implements ApplicationRunner {
public static void main(String[] args) {
SpringApplication.run(GetAllControllerPathApplication.class, args);
}
@Autowired
private RequestMappingHandlerMapping requestMappingHandlerMapping;
@Override
public void run(ApplicationArguments args) throws Exception {
Map<RequestMappingInfo, HandlerMethod> methodMap = requestMappingHandlerMapping.getHandlerMethods();
Map<String, String> urlMap = new HashMap<>();
for (RequestMappingInfo info : methodMap.keySet()){
//获取请求路径
Set<String> directPaths = info.getDirectPaths();
// 获取全部请求方式
//Set<RequestMethod> Methods = info.getMethodsCondition().getMethods();
//获取全部请求名称
String urlName = info.getName();
for (String url : directPaths){
System.out.println("urlname#" + urlName + ", url#" + url);
}
}
}
}
获取所有路径
@SpringBootApplication
public class GetAllControllerPathApplication implements ApplicationRunner {
public static void main(String[] args) {
SpringApplication.run(GetAllControllerPathApplication.class, args);
}
@Autowired
WebApplicationContext applicationContext;
@Override
public void run(ApplicationArguments args) throws Exception {
Map<String, RequestMappingInfoHandlerMapping> map = applicationContext.getBeansOfType(
RequestMappingInfoHandlerMapping.class);
map.forEach((s, requestMappingInfoHandlerMapping) -> {
System.out.println("-------------- " + s + " --------------");
Map<RequestMappingInfo, HandlerMethod> handlerMethods = requestMappingInfoHandlerMapping.getHandlerMethods();
handlerMethods.forEach((requestMappingInfo, handlerMethod) -> {
System.out.println(requestMappingInfo.getDirectPaths() + ", name#" + requestMappingInfo.getName() + ", method#" + requestMappingInfo.getMethodsCondition().getMethods());
});
});
}
}
不能直接注入RequestMappingInfoHandlerMapping
,否则会报错:
Field requestMappingInfoHandlerMapping in com.example.getallcontrollerpath.GetAllControllerPathApplication required a single bean, but 4 were found:
- requestMappingHandlerMapping: defined by method 'requestMappingHandlerMapping' in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]
- healthEndpointWebMvcHandlerMapping: defined by method 'healthEndpointWebMvcHandlerMapping' in class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointWebExtensionConfiguration$MvcAdditionalHealthEndpointPathsConfiguration.class]
- webEndpointServletHandlerMapping: defined by method 'webEndpointServletHandlerMapping' in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/servlet/WebMvcEndpointManagementContextConfiguration.class]
- controllerEndpointHandlerMapping: defined by method 'controllerEndpointHandlerMapping' in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/servlet/WebMvcEndpointManagementContextConfiguration.class]
阅读 752 · 发布于 2022-10-09
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
ThinkPHP5 设置数据库长连接阅读 4015
-
MySQL ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'阅读 5725
-
MySQL 查询过程阅读 2241
-
Spring Boot 注入 Filter 过滤器的几种方式阅读 216
-
Java 并发编程之 ConcurrentLinkedQueue 非阻塞队列阅读 1287
-
Java 并发编程之 AtomicMarkableReference阅读 1030
-
Linux 之定时任务 crontab 无法启动阅读 4015
-
Spring Boot JPA 设置字段 unsigned阅读 3340
-
算法:二分查找阅读 1157
-
Vue .env 环境配置文件阅读 169