Decyzja o tym, który serwer proxy zostanie utworzony dla interfejsu repozytorium Spring Data, jest podejmowana tylko ze względu na konfigurację. Załóżmy, że masz następującą konfigurację:
@Configuration
@EnableJpaRepositories("com.acme.foo")
@EnableMongoRepositories("com.acme.foo")
class Config { }
To w pewnym momencie wybuchnie, gdy interfejsy w pakiecie com.acme.foo
są wykrywane przez infrastrukturę MongoDB i JPA. Aby rozwiązać ten problem, zarówno obsługa JavaConfig, jak i XML umożliwia zdefiniowanie filtrów włączania i wykluczania, dzięki czemu można używać konwencji nazewnictwa, dodatkowych adnotacji itp.:
@Configuration
@EnableJpaRepositories(basePackages = "com.acme.foo",
includeFilters = @Filter(JpaRepo.class))
@EnableMongoRepositories(base Packages = "com.acme.foo",
includeFilters = @Filter(MongoRepo.class))
class Config { }
W tym przypadku dwie adnotacje @JpaRepo
i @MongoRepo
(do utworzenia przez Ciebie) będzie używany do selektywnego wyzwalania wykrywania poprzez dodawanie do nich adnotacji do odpowiednich interfejsów repozytorium.
Prawdziwa automatyczna detekcja jest trochę niemożliwa, ponieważ trudno jest określić, na który sklep jest kierowany, wyłącznie na podstawie deklaracji interfejsu repozytorium, a w momencie tworzenia definicji ziaren nie wiemy nawet o żadnej dalszej infrastrukturze ( EntityManager
lub tym podobne).