【问题标题】:List all rest service urls in spring boot cxf列出spring boot cxf中的所有rest服务url
【发布时间】:2023-03-25 19:35:01
【问题描述】:
在使用 cxf 和 spring-boot 时是否可以列出所有 REST 服务?我已经创建了ApplicationListener<ContextRefreshedEvent>,我想在其中列出为我的 cxf servlet 注册的所有 REST 服务 url。我试图在 CXFServlet、ServletContext、cxf Endpoint 和 cxf Server 类中闲逛,但我无法弄清楚。我还尝试查看 wadl 生成器(功能)和 swagger2 功能,但它们会在请求到来时创建 url 和内容。有可能吗?
谢谢。
【问题讨论】:
标签:
java
spring
rest
spring-boot
cxf
【解决方案1】:
我会扫描类路径上的@WebService 注释,也许它会帮助你:
@Autowired
private ClassPathScanningCandidateComponentProvider annotationScanner;
public List<ClassDocument> generate(String basePackage) throws ClassNotFoundException {
Set<BeanDefinition> candidateComponents = annotationScanner.findCandidateComponents(basePackage);
List<ClassDocument> classDocuments = new ArrayList<>();
for (BeanDefinition component : candidateComponents) {
ClassDocument classDocument = new ClassDocument();
Class<?> beanClass = Class.forName(component.getBeanClassName());
classDocument.setClassName(beanClass.getName());
String[] baseUrl = beanClass.getAnnotation(javax.jws.WebService.class).value();
addMethods(classDocument, beanClass, baseUrl);
classDocuments.add(classDocument);
}
return classDocuments;
}