web-dev-qa-db-fra.com

Comment désactiver l'exposition par défaut des données Spring REST repositories?

J'ai un projet qui utilise Spring-Data-Rest et un projet de dépendance qui utilise uniquement Spring Data. Les deux projets ont des référentiels de données Spring et utilisent @EnableJpaRepositories Pour implémenter leurs interfaces de référentiel, mais je souhaite uniquement exporter les référentiels dans le projet parent.

Voici ma question: existe-t-il un moyen de configurer Spring Data REST pour exposer uniquement les points de terminaison de repos pour les ressources dans le projet parent, sans avoir à annoter explicitement chaque référentiel du projet de dépendance avec la fonction @RepositoryRestResource(exported = false)?

Si je ne peux le faire qu'avec @RepositoryRestResource De le désactiver, et pire encore, aucun autre projet avec un cas d'utilisation différent ne pourra activer REST endpoints pour ces référentiels, mon projet de dépendance devra inclure Spring Data REST uniquement pour le…

23
gyoder

Actuellement, il n'y a pas de commutateur global pour ce que vous recherchez. J'ai déposé ce ticket pour vous pour inclusion dans la prochaine version majeure.

Je ne sais pas si c'est une option pour vous, mais les interfaces de référentiel privé de package ne sont actuellement pas exposées, sauf annotation explicite. Si vous pouvez protéger tous ces packages de référentiels de bibliothèques, cela pourrait être favorable par rapport à l'annotation explicite.

16
Oliver Drotbohm

En boucle ici car je cherchais ce paramètre spécifique. Il semble que cela soit maintenant implémenté. Dans ce cas, vous souhaiterez définir spring.data.rest.detection-strategy = annoté pour éviter l'exposition par défaut.

Toutes les options application.properties:

# Exposes all public repository interfaces but considers @(Repository)RestResource\u2019s `exported flag.
spring.data.rest.detection-strategy=default

# Exposes all repositories independently of type visibility and annotations.
spring.data.rest.detection-strategy=all

# Only repositories annotated with @(Repository)RestResource are exposed, unless their exported flag is set to false.
spring.data.rest.detection-strategy=annotated

# Only public repositories annotated are exposed.
spring.data.rest.detection-strategy=visibility

Références

38
Brian