J'ai une application Spring Boot et je souhaite répertorier tous les référentiels de données ainsi que toutes les méthodes pour chaque référentiel. Comment pourrais-je y parvenir?Comment récupérer toutes les méthodes Data Repository dans Spring Boot
0
A
Répondre
0
Voici une façon de le faire que leveragesspring-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);
}
Remarque: Le code ci-dessus va chercher uniquement les données automatiquement insérées Spring méthodes requête. Si vous avez besoin de toutes les méthodes de requête, y compris celles des interfaces fournies (par exemple CrudRepository), ainsi que les mises en œuvre de méthodes de requête personnalisées puis utilisez les éléments suivants:
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());
}
Merci @KyleAnderson c'est exactement ce que je cherchais! –
getQueryMethodsFor() ne renvoie pas de méthodes de requête à partir de référentiels personnalisés (https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-implementations). Comment pourrais-je obtenir ces méthodes? –
@JoseRomero J'ai ajouté une autre option à ma réponse qui répond à vos besoins. –