MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como o Spring Data sabe com qual armazenamento fazer backup de um repositório se vários módulos forem usados?


A decisão de qual armazenar um proxy criado para uma interface de repositório Spring Data só é tomada devido à sua configuração. Suponha que você tenha a seguinte configuração:
@Configuration
@EnableJpaRepositories("com.acme.foo")
@EnableMongoRepositories("com.acme.foo")
class Config { }

Isso vai explodir em algum momento, pois as interfaces no pacote com.acme.foo ambos são detectados pela infraestrutura MongoDB e JPA. Para resolver isso, o suporte a JavaConfig e XML permite definir filtros de inclusão e exclusão para que você possa usar convenções de nomenclatura, anotações adicionais ou similares:
@Configuration
@EnableJpaRepositories(basePackages = "com.acme.foo", 
                       includeFilters = @Filter(JpaRepo.class))
@EnableMongoRepositories(base Packages = "com.acme.foo", 
                         includeFilters = @Filter(MongoRepo.class))
class Config { }

Neste caso, as duas anotações @JpaRepo e @MongoRepo (a ser criado por você) seria usado para acionar seletivamente a detecção, anotando as interfaces de repositório relevantes com eles.

Uma detecção automática real é meio impossível, pois é difícil dizer qual loja você está direcionando apenas a partir da declaração da interface do repositório e no momento em que as definições de bean são criadas, nem sabemos sobre nenhuma infraestrutura adicional (uma EntityManager ou similares) ainda.