将cxf与spring-boot结合使用时,是否可以列出所有REST服务?我创建了ApplicationListener<ContextRefreshedEvent>
,并在其中列出了为我的cxf servlet注册的所有REST服务URL。我试图在CXFServlet
,ServletContext
,cxf Endpoint
和cxf Server
类中四处摸索,但我无法弄清楚。我也尝试过审查wadl generator(功能)和swagger2功能,但是当请求到来时它们会创建url和内容。可能吗?
谢谢。
最佳答案
我会扫描类路径上的@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;
}