3939import org .springframework .data .repository .core .RepositoryMetadata ;
4040import org .springframework .data .repository .core .support .RepositoryComposition .RepositoryFragments ;
4141import org .springframework .data .repository .core .support .RepositoryFactorySupport ;
42- import org .springframework .data .repository .core .support .RepositoryFragment ;
4342import org .springframework .data .repository .query .QueryLookupStrategy ;
4443import org .springframework .data .repository .query .QueryLookupStrategy .Key ;
4544import org .springframework .data .repository .query .QueryMethodEvaluationContextProvider ;
@@ -92,8 +91,21 @@ protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {
9291 */
9392 @ Override
9493 protected RepositoryFragments getRepositoryFragments (RepositoryMetadata metadata ) {
94+ return getRepositoryFragments (metadata , operations );
95+ }
9596
96- RepositoryFragments fragments = RepositoryFragments .empty ();
97+ /**
98+ * Creates {@link RepositoryFragments} based on {@link RepositoryMetadata} to add Mongo-specific extensions. Typically
99+ * adds a {@link QuerydslMongoPredicateExecutor} if the repository interface uses Querydsl.
100+ * <p>
101+ * Can be overridden by subclasses to customize {@link RepositoryFragments}.
102+ *
103+ * @param metadata repository metadata.
104+ * @param operations the MongoDB operations manager.
105+ * @return
106+ * @since 3.2.1
107+ */
108+ protected RepositoryFragments getRepositoryFragments (RepositoryMetadata metadata , MongoOperations operations ) {
97109
98110 boolean isQueryDslRepository = QUERY_DSL_PRESENT
99111 && QuerydslPredicateExecutor .class .isAssignableFrom (metadata .getRepositoryInterface ());
@@ -105,14 +117,11 @@ protected RepositoryFragments getRepositoryFragments(RepositoryMetadata metadata
105117 "Cannot combine Querydsl and reactive repository support in a single interface" );
106118 }
107119
108- MongoEntityInformation <?, Serializable > entityInformation = getEntityInformation (metadata .getDomainType (),
109- metadata );
110-
111- fragments = fragments .append (RepositoryFragment .implemented (
112- getTargetRepositoryViaReflection (QuerydslMongoPredicateExecutor .class , entityInformation , operations )));
120+ return RepositoryFragments
121+ .just (new QuerydslMongoPredicateExecutor <>(getEntityInformation (metadata .getDomainType ()), operations ));
113122 }
114123
115- return fragments ;
124+ return RepositoryFragments . empty () ;
116125 }
117126
118127 /*
0 commit comments