MySpringWebMvcProvider.java 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. package jnpf;
  2. import io.swagger.v3.oas.annotations.Operation;
  3. import org.springdoc.webmvc.core.providers.SpringWebMvcProvider;
  4. import org.springframework.web.servlet.handler.AbstractHandlerMethodMapping;
  5. import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
  6. import java.util.Collection;
  7. import java.util.LinkedHashMap;
  8. import java.util.Map;
  9. import java.util.stream.Collectors;
  10. /**
  11. * SpringDoc默认展示全部接口
  12. * 过滤未添加@Operation的接口
  13. */
  14. public class MySpringWebMvcProvider extends SpringWebMvcProvider {
  15. @Override
  16. public Map getHandlerMethods() {
  17. if (this.handlerMethods == null) {
  18. Map<String, RequestMappingHandlerMapping> beansOfTypeRequestMappingHandlerMapping = applicationContext.getBeansOfType(RequestMappingHandlerMapping.class);
  19. this.handlerMethods = beansOfTypeRequestMappingHandlerMapping.values().stream()
  20. .map(AbstractHandlerMethodMapping::getHandlerMethods)
  21. .map(Map::entrySet)
  22. .flatMap(Collection::stream)
  23. .filter(v -> v.getValue().hasMethodAnnotation(Operation.class))
  24. .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a1, a2) -> a1, LinkedHashMap::new));
  25. }
  26. return this.handlerMethods;
  27. }
  28. }