De beslissing die een proxy opslaat die is gemaakt voor een Spring Data-repository-interface, wordt alleen gemaakt vanwege uw configuratie-instellingen. Stel dat u de volgende configuratie heeft:
@Configuration
@EnableJpaRepositories("com.acme.foo")
@EnableMongoRepositories("com.acme.foo")
class Config { }
Dit gaat op een gegeven moment exploderen als de interfaces in pakket com.acme.foo
worden beide gedetecteerd door de MongoDB- en JPA-infrastructuur. Om dit op te lossen, kunt u met zowel de JavaConfig- als de XML-ondersteuning filters voor opnemen en uitsluiten definiëren, zodat u naamconventies, aanvullende annotaties en dergelijke kunt gebruiken:
@Configuration
@EnableJpaRepositories(basePackages = "com.acme.foo",
includeFilters = @Filter(JpaRepo.class))
@EnableMongoRepositories(base Packages = "com.acme.foo",
includeFilters = @Filter(MongoRepo.class))
class Config { }
In dit geval zijn de twee annotaties @JpaRepo
en @MongoRepo
(door u te maken) zou worden gebruikt om selectief de detectie te activeren door de relevante repository-interfaces ermee te annoteren.
Een echte automatische detectie is een beetje onmogelijk, omdat het moeilijk te zeggen is op welke winkel u zich richt, uitsluitend uit de repository-interfacedeclaratie en op het moment dat de bean-definities worden gemaakt, weten we niet eens van enige verdere infrastructuur (een EntityManager
of iets dergelijks) nog niet.