sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo sabe Spring Data qué tienda respaldar un repositorio si se usan varios módulos?

La decisión de qué almacenar un proxy creado para una interfaz de repositorio de Spring Data solo se toma debido a su configuración. Suponga que tiene la siguiente configuración:

@Configuration
@EnableJpaRepositories("com.acme.foo")
@EnableMongoRepositories("com.acme.foo")
class Config { }

Esto explotará en algún momento como las interfaces en el paquete com.acme.foo ambos son detectados por la infraestructura MongoDB y JPA. Para resolver esto, la compatibilidad con JavaConfig y XML le permite definir filtros de inclusión y exclusión para que pueda usar convenciones de nomenclatura, anotaciones adicionales o similares:

@Configuration
@EnableJpaRepositories(basePackages = "com.acme.foo", 
                       includeFilters = @Filter(JpaRepo.class))
@EnableMongoRepositories(base Packages = "com.acme.foo", 
                         includeFilters = @Filter(MongoRepo.class))
class Config { }

En este caso, las dos anotaciones @JpaRepo y @MongoRepo (para ser creado por usted) se usaría para activar selectivamente la detección al anotar las interfaces de repositorio relevantes con ellos.

Una detección automática real es casi imposible, ya que es difícil saber a qué tienda se dirige únicamente a partir de la declaración de la interfaz del repositorio y en el momento en que se crean las definiciones de bean, ni siquiera conocemos ninguna otra infraestructura (un EntityManager o similar) todavía.