我有一个Spring Boot应用程序,我想列出所有数据存储库以及每个存储库的所有方法。我怎么能做到这一点?
答案 0 :(得分:0)
以下是leverages spring-data-commons
Repositories repositories = new Repositories(context.getBeanFactory());
Iterator it = repositories.iterator();
while(it.hasNext()) {
Class<?> domainClass = (Class<?>) it.next();
//Get Repositories
repositories.getRepositoryFor(domainClass);
//Get Query Methods
List<QueryMethod> methods = repositories.getQueryMethodsFor(domainClass);
}
注意:上面的代码只提取自动实现的Spring Data Query方法。如果您需要所有Query方法,包括来自提供的接口(例如CrudRepository)的方法以及自定义Query方法实现,请使用以下内容:
Repositories repositories = new Repositories(context.getBeanFactory());
Iterator it = repositories.iterator();
while(it.hasNext()) {
Class<?> domainClass = (Class<?>) it.next();
Advised repoProxy = (Advised)repositories.getRepositoryFor(domainClass);
Class<?>[] interfaces = repoProxy.getProxiedInterfaces();
List<Method> methods = Arrays.stream(interfaces)
.flatMap(c -> Arrays.stream(ReflectionUtils.getAllDeclaredMethods(c)))
.collect(toList());
}