2017-09-20 7 views

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()); 
} 
+1

Merci @KyleAnderson c'est exactement ce que je cherchais! –

+0

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? –

+0

@JoseRomero J'ai ajouté une autre option à ma réponse qui répond à vos besoins. –