Beslutet om att lagra en proxy som skapats för ett Spring Data repository-gränssnitt fattas endast på grund av din konfigurationsinställning. Anta att du har följande konfiguration:
@Configuration
@EnableJpaRepositories("com.acme.foo")
@EnableMongoRepositories("com.acme.foo")
class Config { }
Detta kommer att sprängas någon gång eftersom gränssnitten i paketet com.acme.foo
detekteras båda av MongoDB- och JPA-infrastrukturen. För att lösa detta låter både JavaConfig- och XML-stödet dig definiera inkluderings- och exkluderingsfilter så att du antingen kan använda namnkonventioner, ytterligare kommentarer eller liknande:
@Configuration
@EnableJpaRepositories(basePackages = "com.acme.foo",
includeFilters = @Filter(JpaRepo.class))
@EnableMongoRepositories(base Packages = "com.acme.foo",
includeFilters = @Filter(MongoRepo.class))
class Config { }
I det här fallet, de två anteckningarna @JpaRepo
och @MongoRepo
(som skapas av dig) skulle användas för att selektivt utlösa upptäckten genom att annotera relevanta förvarsgränssnitt med dem.
En riktig autodetektering är typ omöjlig eftersom det är svårt att avgöra vilken butik du riktar in dig på enbart från förvarsgränssnittsdeklarationen och vid den tidpunkt då böndefinitionerna skapas vet vi inte ens om någon ytterligare infrastruktur (en EntityManager
eller liknande) ännu.