tutorial repositorios repositories qué persistencia example ejemplos data curso consultas java spring-data spring-data-rest

java - repositorios - spring persistencia



¿Cómo deshabilitar la exposición predeterminada de los repositorios REST de Spring Data? (2)

Tengo un proyecto que usa Spring-Data-Rest y tengo un proyecto de dependencia que solo usa Spring Data. Ambos proyectos tienen repositorios de datos de Spring y usan @EnableJpaRepositories para implementar sus interfaces de repositorio, pero solo quiero exportar los repositorios en el proyecto principal.

Aquí está mi pregunta: ¿hay alguna manera de configurar Spring Data REST para exponer solo los puntos finales de descanso para los recursos en el proyecto principal, sin tener que anotar explícitamente cada repositorio en el proyecto de dependencia con @RepositoryRestResource(exported = false) ?

Si solo puedo hacer esto con @RepositoryRestResource de desactivarlo, y peor aún, ningún otro proyecto con un caso de uso diferente podrá habilitar los puntos finales REST para esos repositorios, mi proyecto de dependencia deberá incluir Spring Data REST solo para el ...


Actualmente no hay un interruptor global para lo que estás buscando. He presentado este boleto para usted para su inclusión en el próximo lanzamiento importante.

No estoy seguro de si es una opción para usted, pero las interfaces de repositorio privado del paquete no están expuestas actualmente a menos que estén anotadas explícitamente. Si puede hacer que todos los paquetes de repositorios de bibliotecas estén protegidos, eso podría ser favorable sobre la anotación explícita.


Volviendo aquí mientras buscaba este ajuste específico. Parece que esto ya está implementado. En este caso, desearía establecer spring.data.rest.detection-strategy = anotado para evitar la exposición predeterminada.

Todas las opciones de 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

Referencia: 4.6.1. ¿Qué repositorios quedan expuestos por defecto?