Решението кой да съхранява прокси сървър, създаден за интерфейс на хранилище на Spring Data, се взема само поради вашата настройка на конфигурацията. Да приемем, че имате следната конфигурация:
@Configuration
@EnableJpaRepositories("com.acme.foo")
@EnableMongoRepositories("com.acme.foo")
class Config { }
Това ще се взриви в даден момент, тъй като интерфейсите в пакета com.acme.foo
и двете се откриват от инфраструктурата MongoDB и JPA. За да разрешите това, поддръжката на JavaConfig и XML ви позволява да дефинирате филтри за включване и изключване, така че да можете да използвате конвенции за именуване, допълнителни анотации или други подобни:
@Configuration
@EnableJpaRepositories(basePackages = "com.acme.foo",
includeFilters = @Filter(JpaRepo.class))
@EnableMongoRepositories(base Packages = "com.acme.foo",
includeFilters = @Filter(MongoRepo.class))
class Config { }
В този случай двете анотации @JpaRepo
и @MongoRepo
(ще бъдат създадени от вас) ще се използват за селективно задействане на откриването чрез анотиране на съответните интерфейси на хранилище с тях.
Истинското автоматично откриване е донякъде невъзможно, тъй като е трудно да се каже към кой магазин сте се насочили единствено от декларацията на интерфейса на хранилището и в момента, в който се създават дефинициите на компонента, ние дори не знаем за допълнителна инфраструктура (ан EntityManager
или други подобни) все още.