Rozhodnutí o uložení proxy vytvořeného pro rozhraní úložiště Spring Data je provedeno pouze na základě vašeho nastavení konfigurace. Předpokládejme, že máte následující konfiguraci:
@Configuration
@EnableJpaRepositories("com.acme.foo")
@EnableMongoRepositories("com.acme.foo")
class Config { }
To v určitém okamžiku praskne, protože rozhraní v balíčku com.acme.foo
jsou oba detekovány infrastrukturou MongoDB a JPA. K vyřešení tohoto problému vám podpora JavaConfig i XML umožňuje definovat filtry pro zahrnutí a vyloučení, takže můžete použít konvence pojmenování, další anotace nebo podobně:
@Configuration
@EnableJpaRepositories(basePackages = "com.acme.foo",
includeFilters = @Filter(JpaRepo.class))
@EnableMongoRepositories(base Packages = "com.acme.foo",
includeFilters = @Filter(MongoRepo.class))
class Config { }
V tomto případě dvě anotace @JpaRepo
a @MongoRepo
(které vytvoříte vy) by byly použity k selektivnímu spouštění detekce tím, že se s nimi označí příslušná rozhraní úložiště.
Skutečná automatická detekce je poněkud nemožná, protože je těžké určit, na který obchod cílíte, pouze z deklarace rozhraní úložiště a v okamžiku, kdy jsou vytvořeny definice fazolí, ani nevíme o žádné další infrastruktuře (např. EntityManager
nebo podobně).