Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Beyond the Magic - Spring Data Ahead of Time Re...

Beyond the Magic - Spring Data Ahead of Time Repositories for MongoDB

Avatar for Christoph Strobl

Christoph Strobl

October 07, 2025
Tweet

More Decks by Christoph Strobl

Other Decks in Programming

Transcript

  1. Beyond the Magic Ahead of Time Code Generation for Spring

    Data MongoDB Repositories Christoph Strobl, Spring Data Committer
  2. The following is intended to outline the general direction of

    future development. It is intended for information purposes only and may not be incorporated into any contract. Any information regarding offerings, future updates or other planned modifications is subject to ongoing evaluation and is subject to change. This information is provided without warranty or any kind, express or implied, and is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making business decisions. The development, release, and timing of any features or functionality described in this presentation remain at the sole discretion of Broadcom. Broadcom has no obligation to update forward looking information in this presentation. Presentation contains forward looking information
  3. List<Employee> f i ndByFirstName(String name) List<Employee> f i ndByFirstNameAndLastname(String f

    i rstname, String lastname) List<Employee> f i ndByAddressLocationWithin(Polygon area)
  4. List<Employee> f i ndByFirstName(String name) List<Employee> f i ndByFirstNameAndLastname(String f

    i rstname, String lastname) Employee getBySsn(String ssn) List<Employee> f i ndByAddressLocationWithin(Polygon area)
  5. List<Employee> f i ndByFirstName(String name) List<Employee> f i ndByFirstNameAndLastname(String f

    i rstname, String lastname) Employee getBySsn(String ssn) List<Employee> f i ndByAddressLocationWithin(Polygon area) Page<Employee> f i ndByLastname(Pageable page)
  6. List<Employee> f i ndByFirstName(String name) List<Employee> f i ndByFirstNameAndLastname(String f

    i rstname, String lastname) Employee getBySsn(String ssn) List<Employee> searchByAddressLocationNear(GeoJsonPoint location) List<Employee> f i ndByAddressLocationWithin(Polygon area) Page<Employee> f i ndByLastname(Pageable page)
  7. List<Employee> f i ndByFirstName(String name) List<Employee> f i ndByFirstNameAndLastname(String f

    i rstname, String lastname) Employee getBySsn(String ssn) List<Employee> searchByAddressLocationNear(GeoJsonPoint location) List<Employee> f i ndByAddressLocationWithin(Polygon area) Page<Employee> f i ndByLastname(Pageable page) Stream<Employee> streamByLastname(String lastname)
  8. List<Employee> f i ndByFirstName(String name) List<Employee> f i ndByFirstNameAndLastname(String f

    i rstname, String lastname) Employee getBySsn(String ssn) List<Employee> searchByAddressLocationNear(GeoJsonPoint location) List<Employee> f i ndByAddressLocationWithin(Polygon area) Page<Employee> f i ndByLastname(Pageable page) Stream<Employee> streamByLastname(String lastname) @Tailable F l ux<Employee> streamByLastname(String lastname)
  9. List<Employee> f i ndByFirstName(String name) List<Employee> f i ndByFirstNameAndLastname(String f

    i rstname, String lastname) Employee getBySsn(String ssn) List<Employee> searchByAddressLocationNear(GeoJsonPoint location) List<Employee> f i ndByAddressLocationWithin(Polygon area) Page<Employee> f i ndByLastname(Pageable page) Stream<Employee> streamByLastname(String lastname) @Tailable F l ux<Employee> streamByLastname(String lastname) Long countBySalarayGreaterThan(double salary)
  10. List<Employee> f i ndByFirstName(String name) List<Employee> f i ndByFirstNameAndLastname(String f

    i rstname, String lastname) Employee getBySsn(String ssn) List<Employee> searchByAddressLocationNear(GeoJsonPoint location) List<Employee> f i ndByAddressLocationWithin(Polygon area) Page<Employee> f i ndByLastname(Pageable page) Stream<Employee> streamByLastname(String lastname) @Tailable F l ux<Employee> streamByLastname(String lastname) Long countBySalarayGreaterThan(double salary) @Update("{ '$inc' : { 'salary' : ?1 } }") void updateSalaryBySsn(String ssn, long inc)
  11. List<Employee> f i ndByFirstName(String name) List<Employee> f i ndByFirstNameAndLastname(String f

    i rstname, String lastname) Employee getBySsn(String ssn) List<Employee> searchByAddressLocationNear(GeoJsonPoint location) List<Employee> f i ndByAddressLocationWithin(Polygon area) Page<Employee> f i ndByLastname(Pageable page) Stream<Employee> streamByLastname(String lastname) @Tailable F l ux<Employee> streamByLastname(String lastname) Long countBySalarayGreaterThan(double salary) @Update("{ '$inc' : { 'salary' : ?1 } }") void updateSalaryBySsn(String ssn, long inc) @Aggregation(pipeline = { "{ '$match' : { 'last_name' : { '$ne' : null } } }", "{ '$group' … AggregationResults<EmpolyeeSummary> aggregateSummary()
  12. List<Employee> f i ndByFirstName(String name) List<Employee> f i ndByFirstNameAndLastname(String f

    i rstname, String lastname) Employee getBySsn(String ssn) List<Employee> searchByAddressLocationNear(GeoJsonPoint location) List<Employee> f i ndByAddressLocationWithin(Polygon area) Page<Employee> f i ndByLastname(Pageable page) Stream<Employee> streamByLastname(String lastname) @Tailable F l ux<Employee> streamByLastname(String lastname) Long countBySalarayGreaterThan(double salary) @Update("{ '$inc' : { 'salary' : ?1 } }") void updateSalaryBySsn(String ssn, long inc) @Aggregation(pipeline = { "{ '$match' : { 'last_name' : { '$ne' : null } } }", "{ '$group' … AggregationResults<EmpolyeeSummary> aggregateSummary() @VectorSearch(indexName = "skills_idx_cos") SearchResults<Employee> searchEmployeeByCountryAndSkillsEmbeddingNear(String country, Vector vecto
  13. . _ _ _ _ _ _ _ _ _

    /\\ / _ _ _ '_ _ _ _ _(_)_ _ _ _ _ _ \ \ \ \ ( ( )\ _ _ _ | '_ | '_| | '_ \ / _` | \ \ \ \ \\/ _ _ _ )| |_)| | | | | | | (_| | ) ) ) ) ' | _ _ _ _ | . _ _ | _ | | _ | _ | |_\ _ _ , | / / / / = = = = = = = = = | _ | = = = = = = = = = = = = = = | _ _ _ / = / _/_/_/ : : Spring Boot : : (v4.0.0-M3) INFO example.springdata.aot.App - Starting App v2.0.0.BUILD-SNAPSHOT using Java 17.0.4.1 with PID 81295 DEBUG example.springdata.aot.App - Running with Spring Boot v4.0.0-M3, Spring v7.0.0-M9 INFO example.springdata.aot.App - No active prof i le set, falling back to 1 default prof i le: "default" INFO RepositoryConf i gurationDelegate - Bootstrapping Spring Data MongoDB repositories in DEFAULT mode. INFO RepositoryConf i gurationDelegate - Finished Spring Data repository scanning in 18 ms. INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server INFO example.springdata.aot.App - Started App in 0.739 seconds (process running for 1.076)
  14. ERROR example.springdata.aot.App - UncategorizedMongoDbException: Command failed with error 15975 (Location15975)

    : '$sort key . . . at o.s.d.m.c.MongoExceptionTranslator.doTranslateException(MongoExceptionTranslator at o.s.d.m.c.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTran at o.s.d.m.c.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:3175) at o.s.d.m.c.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:3086) at o.s.d.m.c.MongoTemplate.doFind(MongoTemplate.java:2776) at o.s.d.m.c.ExecutableFindOperationSupport$ExecutableFindSupport.doFind(ExecutableFipera at o.s.d.m.c.ExecutableFindOperationSupport$ExecutableFindSupport.all(ExecutableFindOper at o.s.d.m.r.q.AbstractMongoQuery.lambda$getExecution$2(AbstractMongoQuery.java:190) at o.s.d.m.r.q.AbstractMongoQuery.doExecute(AbstractMongoQuery.java:146) at o.s.d.m.r.q.AbstractMongoQuery.execute(AbstractMongoQuery.java:119) at o.s.d.r.c.s.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:169) at o.s.d.r.c.s.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) at o.s.d.r.c.s.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInter at o.s.d.r.c.s.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterce at o.s.a.f.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:1 at at o.s.d.m.r.s.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterc) at o.s.a.f.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at o.s.a.f.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:222) at jdk.proxy2/jdk.proxy2.$Proxy53(Unknown Source)
  15. ERROR example.springdata.aot.App - UncategorizedMongoDbException: Command failed with error 15975 (Location15975)

    : '$sort key . . . at o.s.d.m.c.MongoExceptionTranslator.doTranslateException(MongoExceptionTranslator at o.s.d.m.c.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTran at o.s.d.m.c.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:3175) at o.s.d.m.c.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:3086) at o.s.d.m.c.MongoTemplate.doFind(MongoTemplate.java:2776) at o.s.d.m.c.ExecutableFindOperationSupport$ExecutableFindSupport.doFind(ExecutableFipera at o.s.d.m.c.ExecutableFindOperationSupport$ExecutableFindSupport.all(ExecutableFindOper at o.s.d.m.r.q.AbstractMongoQuery.lambda$getExecution$2(AbstractMongoQuery.java:190) at o.s.d.m.r.q.AbstractMongoQuery.doExecute(AbstractMongoQuery.java:146) at o.s.d.m.r.q.AbstractMongoQuery.execute(AbstractMongoQuery.java:119) at o.s.d.r.c.s.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:169) at o.s.d.r.c.s.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) at o.s.d.r.c.s.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInter at o.s.d.r.c.s.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterce at o.s.a.f.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:1 at at o.s.d.m.r.s.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterc) at o.s.a.f.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at o.s.a.f.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:222) at jdk.proxy2/jdk.proxy2.$Proxy53(Unknown Source) 😶🌫
  16. . _ _ _ _ _ _ _ _ _

    /\\ / _ _ _ '_ _ _ _ _(_)_ _ _ _ _ _ \ \ \ \ ( ( )\ _ _ _ | '_ | '_| | '_ \ / _` | \ \ \ \ \\/ _ _ _ )| |_)| | | | | | | (_| | ) ) ) ) ' | _ _ _ _ | . _ _ | _ | | _ | _ | |_\ _ _ , | / / / / = = = = = = = = = | _ | = = = = = = = = = = = = = = | _ _ _ / = / _/_/_/ : : Spring Boot : : (v4.0.0-M3) INFO example.springdata.aot.App - Starting AOT-processed App v2.0.0.BUILD-SNAPSHOT using Java 17.0.4.1 DEBUG example.springdata.aot.App - Running with Spring Boot v4.0.0-M3, Spring v7.0.0-M9 INFO example.springdata.aot.App - No active prof i le set, falling back to 1 default prof i le: "default" INFO RepositoryConf i gurationDelegate - Bootstrapping Spring Data MongoDB repositories in DEFAULT mode. INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server INFO example.springdata.aot.App - Started App in 0.595 seconds (process running for 0.936)
  17. . _ _ _ _ _ _ _ _ _

    /\\ / _ _ _ '_ _ _ _ _(_)_ _ _ _ _ _ \ \ \ \ ( ( )\ _ _ _ | '_ | '_| | '_ \ / _` | \ \ \ \ \\/ _ _ _ )| |_)| | | | | | | (_| | ) ) ) ) ' | _ _ _ _ | . _ _ | _ | | _ | _ | |_\ _ _ , | / / / / = = = = = = = = = | _ | = = = = = = = = = = = = = = | _ _ _ / = / _/_/_/ : : Spring Boot : : (v4.0.0-M3) INFO example.springdata.aot.App - Starting AOT-processed App v2.0.0.BUILD-SNAPSHOT using Java 17.0.4.1 DEBUG example.springdata.aot.App - Running with Spring Boot v4.0.0-M3, Spring v7.0.0-M9 INFO example.springdata.aot.App - No active prof i le set, falling back to 1 default prof i le: "default" INFO RepositoryConf i gurationDelegate - Bootstrapping Spring Data MongoDB repositories in DEFAULT mode. INFO RepositoryConf i gurationDelegate - Finished Spring Data repository scanning in 18 ms. INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server INFO example.springdata.aot.App - Started App in 0.595 seconds (process running for 0.936) no longer needed faster startup
 (was 0.793) uses AOT contributions \ö/
  18. ERROR example.springdata.aot.App - UncategorizedMongoDbException: Command failed with error 15975 (Location15975)

    : '$sort key . . . at o.s.d.m.c.MongoExceptionTranslator.doTranslateException(MongoExceptionTranslator at o.s.d.m.c.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTran at o.s.d.m.c.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:3175) at o.s.d.m.c.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:3086) at o.s.d.m.c.MongoTemplate.doFind(MongoTemplate.java:2776) at o.s.d.m.c.ExecutableFindOperationSupport$ExecutableFindSupport.doFind(ExecutableFipera at o.s.d.m.c.ExecutableFindOperationSupport$ExecutableFindSupport.all(ExecutableFindOper at o.s.d.r.c.s.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:169) at o.s.d.r.c.s.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) at o.s.d.r.c.s.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInter at o.s.d.r.c.s.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterce at o.s.a.f.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:1 at o.s.d.m.r.s.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterc) at o.s.a.f.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at o.s.a.f.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:222) at jdk.proxy2/jdk.proxy2.$Proxy53.f i ndJustUsernameBy(Unknown Source) at e.s.a.UserRepositoryImpl _ _ AotRepository.f i ndJustUsernameBy(UserRepositoryImpl _ _ AotRepository.java:69) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at o.s.a.s.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)
  19. ERROR example.springdata.aot.App - UncategorizedMongoDbException: Command failed with error 15975 (Location15975)

    : '$sort key . . . at o.s.d.m.c.MongoExceptionTranslator.doTranslateException(MongoExceptionTranslator at o.s.d.m.c.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTran at o.s.d.m.c.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:3175) at o.s.d.m.c.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:3086) at o.s.d.m.c.MongoTemplate.doFind(MongoTemplate.java:2776) at o.s.d.m.c.ExecutableFindOperationSupport$ExecutableFindSupport.doFind(ExecutableFipera at o.s.d.m.c.ExecutableFindOperationSupport$ExecutableFindSupport.all(ExecutableFindOper at o.s.d.r.c.s.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:169) at o.s.d.r.c.s.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) at o.s.d.r.c.s.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInter at o.s.d.r.c.s.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterce at o.s.a.f.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:1 at o.s.d.m.r.s.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterc) at o.s.a.f.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at o.s.a.f.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:222) at jdk.proxy2/jdk.proxy2.$Proxy53.f i ndJustUsernameBy(Unknown Source) at e.s.a.UserRepositoryImpl _ _ AotRepository.f i ndJustUsernameBy(UserRepositoryImpl _ _ AotRepository.java:69) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at o.s.a.s.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359) navigable & debuggable
  20. . _ _ _ _ _ _ _ _ _

    /\\ / _ _ _ '_ _ _ _ _(_)_ _ _ _ _ _ \ \ \ \ ( ( )\ _ _ _ | '_ | '_| | '_ \ / _` | \ \ \ \ \\/ _ _ _ )| |_)| | | | | | | (_| | ) ) ) ) ' | _ _ _ _ | . _ _ | _ | | _ | _ | |_\ _ _ , | / / / / = = = = = = = = = | _ | = = = = = = = = = = = = = = | _ _ _ / = / _/_/_/ : : Spring Boot : : (v4.0.0-M3) INFO example.springdata.aot.App - Starting AOT-processed App v2.0.0.BUILD-SNAPSHOT using Java 17.0.4.1 DEBUG example.springdata.aot.App - Running with Spring Boot v4.0.0-M3, Spring v7.0.0-M9 INFO example.springdata.aot.App - No active prof i le set, falling back to 1 default prof i le: "default" INFO RepositoryConf i gurationDelegate - Bootstrapping Spring Data MongoDB repositories in DEFAULT mode. INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server INFO example.springdata.aot.App - Started App in 0.595 seconds (process running for 0.936) uses AOT contributions \ö/
  21. . _ _ _ _ _ _ _ _ _

    /\\ / _ _ _ '_ _ _ _ _(_)_ _ _ _ _ _ \ \ \ \ ( ( )\ _ _ _ | '_ | '_| | '_ \ / _` | \ \ \ \ \\/ _ _ _ )| |_)| | | | | | | (_| | ) ) ) ) ' | _ _ _ _ | . _ _ | _ | | _ | _ | |_\ _ _ , | / / / / = = = = = = = = = | _ | = = = = = = = = = = = = = = | _ _ _ / = / _/_/_/ : : Spring Boot : : (v4.0.0-M2) INFO example.springdata.aot.App - Starting AOT-processed App v2.0.0.BUILD-SNAPSHOT using Java 17.0.4.1 DEBUG example.springdata.aot.App - Running with Spring Boot v4.0.0-M2, Spring v7.0.0-M8 INFO example.springdata.aot.App - No active prof i le set, falling back to 1 default prof i le: "default" INFO RepositoryConf i gurationDelegate - Bootstrapping Spring Data MongoDB repositories in DEFAULT mode. INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server INFO example.springdata.aot.App - Started App in 0.595 seconds (process running for 0.936) JVM Startup Class Loading Verification, Preparation, Resolution Class Initialization Code Execution time
  22. . _ _ _ _ _ _ _ _ _

    /\\ / _ _ _ '_ _ _ _ _(_)_ _ _ _ _ _ \ \ \ \ ( ( )\ _ _ _ | '_ | '_| | '_ \ / _` | \ \ \ \ \\/ _ _ _ )| |_)| | | | | | | (_| | ) ) ) ) ' | _ _ _ _ | . _ _ | _ | | _ | _ | |_\ _ _ , | / / / / = = = = = = = = = | _ | = = = = = = = = = = = = = = | _ _ _ / = / _/_/_/ : : Spring Boot : : (v4.0.0-M2) INFO example.springdata.aot.App - Starting AOT-processed App v2.0.0.BUILD-SNAPSHOT using Java 17.0.4.1 DEBUG example.springdata.aot.App - Running with Spring Boot v4.0.0-M2, Spring v7.0.0-M8 INFO example.springdata.aot.App - No active prof i le set, falling back to 1 default prof i le: "default" INFO RepositoryConf i gurationDelegate - Bootstrapping Spring Data MongoDB repositories in DEFAULT mode. INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server INFO example.springdata.aot.App - Started App in 0.595 seconds (process running for 0.936) JVM Startup Class Loading Verification, Preparation, Resolution Class Initialization Code Execution time JEP 483 - Ahead of Time Class Loading & Linking since Java 24
  23. . . . [0,132s][info][class,load] org.springframework.data.mongodb.repository.MongoRepository source: shared objects f i

    le [0,132s][info][class,load] org.springframework.data.mongodb.repository.support.SimpleMongoRepository source: shared object [0,132s][info][class,load] org.springframework.data.mongodb.repository.support.MongoRepositoryFactory$MongoQueryLookupStra objects f i le [0,132s][info][class,load] org.springframework.data.mongodb.repository.support.MongoEntityInformationSupport source: share [0,132s][info][class,load] org.springframework.data.mongodb.repository.query.MongoEntityInformation source: shared objects [0,132s][info][class,load] org.springframework.data.mongodb.repository.aot.MongoAotRepositoryFragmentSupport source: share [0,132s][info][class,load] example.springdata.aot.UserRepositoryImpl _ _ AotRepository source: shared objects f i le [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.PersistenceExceptionTranslationAutoConf i gura objects f i le [0,132s][info][class,load] org.springframework.aop.framework.AopInfrastructureBean source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.framework.ProxyProcessorSupport source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.framework.AbstractAdvisingBeanPostProcessor source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.framework.autoproxy.AbstractBeanFactoryAwareAdvisingPostProcessor sourc f i le [0,132s][info][class,load] org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor source: shared [0,132s][info][class,load] org.springframework.stereotype.Repository source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.support.AbstractPointcutAdvisor source: shared objects f i le [0,132s][info][class,load] example.springdata.aot.Post _ _ Accessor_cu5r0l source: shared objects f i le [0,132s][info][class,load] example.springdata.aot.User _ _ Accessor_cu2hga source: shared objects f i le [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.TransactionManagerCustomizationAutoConf i gura objects f i le [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.TransactionManagerCustomizers source: shared [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.TransactionManagerCustomizer source: shared [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.ExecutionListenersTransactionManagerCustomiz objects f i le . . .
  24. . . . [0,132s][info][class,load] org.springframework.data.mongodb.repository.MongoRepository source: shared objects f i

    le [0,132s][info][class,load] org.springframework.data.mongodb.repository.support.SimpleMongoRepository source: shared object [0,132s][info][class,load] org.springframework.data.mongodb.repository.support.MongoRepositoryFactory$MongoQueryLookupStra objects f i le [0,132s][info][class,load] org.springframework.data.mongodb.repository.support.MongoEntityInformationSupport source: share [0,132s][info][class,load] org.springframework.data.mongodb.repository.query.MongoEntityInformation source: shared objects [0,132s][info][class,load] org.springframework.data.mongodb.repository.aot.MongoAotRepositoryFragmentSupport source: share [0,132s][info][class,load] example.springdata.aot.UserRepositoryImpl _ _ AotRepository source: shared objects f i le [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.PersistenceExceptionTranslationAutoConf i gura objects f i le [0,132s][info][class,load] org.springframework.aop.framework.AopInfrastructureBean source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.framework.ProxyProcessorSupport source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.framework.AbstractAdvisingBeanPostProcessor source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.framework.autoproxy.AbstractBeanFactoryAwareAdvisingPostProcessor sourc f i le [0,132s][info][class,load] org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor source: shared [0,132s][info][class,load] org.springframework.stereotype.Repository source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.support.AbstractPointcutAdvisor source: shared objects f i le [0,132s][info][class,load] example.springdata.aot.Post _ _ Accessor_cu5r0l source: shared objects f i le [0,132s][info][class,load] example.springdata.aot.User _ _ Accessor_cu2hga source: shared objects f i le [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.TransactionManagerCustomizationAutoConf i gura objects f i le [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.TransactionManagerCustomizers source: shared [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.TransactionManagerCustomizer source: shared [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.ExecutionListenersTransactionManagerCustomiz objects f i le . . . it’s right here
  25. . . . [0,132s][info][class,load] org.springframework.data.mongodb.repository.MongoRepository source: shared objects f i

    le [0,132s][info][class,load] org.springframework.data.mongodb.repository.support.SimpleMongoRepository source: shared object [0,132s][info][class,load] org.springframework.data.mongodb.repository.support.MongoRepositoryFactory$MongoQueryLookupStra objects f i le [0,132s][info][class,load] org.springframework.data.mongodb.repository.support.MongoEntityInformationSupport source: share [0,132s][info][class,load] org.springframework.data.mongodb.repository.query.MongoEntityInformation source: shared objects [0,132s][info][class,load] org.springframework.data.mongodb.repository.aot.MongoAotRepositoryFragmentSupport source: share [0,132s][info][class,load] example.springdata.aot.UserRepositoryImpl _ _ AotRepository source: shared objects f i le [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.PersistenceExceptionTranslationAutoConf i gura objects f i le [0,132s][info][class,load] org.springframework.aop.framework.AopInfrastructureBean source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.framework.ProxyProcessorSupport source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.framework.AbstractAdvisingBeanPostProcessor source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.framework.autoproxy.AbstractBeanFactoryAwareAdvisingPostProcessor sourc f i le [0,132s][info][class,load] org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor source: shared [0,132s][info][class,load] org.springframework.stereotype.Repository source: shared objects f i le [0,132s][info][class,load] org.springframework.aop.support.AbstractPointcutAdvisor source: shared objects f i le [0,132s][info][class,load] example.springdata.aot.Post _ _ Accessor_cu5r0l source: shared objects f i le [0,132s][info][class,load] example.springdata.aot.User _ _ Accessor_cu2hga source: shared objects f i le [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.TransactionManagerCustomizationAutoConf i gura objects f i le [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.TransactionManagerCustomizers source: shared [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.TransactionManagerCustomizer source: shared [0,132s][info][class,load] org.springframework.boot.transaction.autoconf i gure.ExecutionListenersTransactionManagerCustomiz objects f i le . . . optimized to access properties
  26. > java -XX : AOTCache=app.aot -Dspring.aot.enabled=true - jar spring -

    data - mongodb - aot - optimization.jar Java AOT Cache Spring AOT support
  27. . _ _ _ _ _ _ _ _ _

    /\\ / _ _ _ '_ _ _ _ _(_)_ _ _ _ _ _ \ \ \ \ ( ( )\ _ _ _ | '_ | '_| | '_ \ / _` | \ \ \ \ \\/ _ _ _ )| |_)| | | | | | | (_| | ) ) ) ) ' | _ _ _ _ | . _ _ | _ | | _ | _ | |_\ _ _ , | / / / / = = = = = = = = = | _ | = = = = = = = = = = = = = = | _ _ _ / = / _/_/_/ : : Spring Boot : : (v4.0.0-M3) INFO example.springdata.aot.App - Starting AOT-processed App v2.0.0.BUILD-SNAPSHOT using Java 25 DEBUG example.springdata.aot.App - Running with Spring Boot v4.0.0-M3, Spring v7.0.0-M9 INFO example.springdata.aot.App - No active prof i le set, falling back to 1 default prof i le: "default" INFO RepositoryConf i gurationDelegate - Bootstrapping Spring Data MongoDB repositories in DEFAULT mode. INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server INFO example.springdata.aot.App - Started App in 0.177 seconds (process running for 0.436) faster startup
 Java 25 > java -XX : AOTCache=app.aot -Dspring.aot.enabled=true - jar spring - data - mongodb - aot - optimization.jar Java AOT Cache Spring AOT support
  28. . _ _ _ _ _ _ _ _ _

    /\\ / _ _ _ '_ _ _ _ _(_)_ _ _ _ _ _ \ \ \ \ ( ( )\ _ _ _ | '_ | '_| | '_ \ / _` | \ \ \ \ \\/ _ _ _ )| |_)| | | | | | | (_| | ) ) ) ) ' | _ _ _ _ | . _ _ | _ | | _ | _ | |_\ _ _ , | / / / / = = = = = = = = = | _ | = = = = = = = = = = = = = = | _ _ _ / = / _/_/_/ : : Spring Boot : : (v4.0.0-M3) INFO example.springdata.aot.App - Starting AOT-processed App v2.0.0.BUILD-SNAPSHOT using Java 25 DEBUG example.springdata.aot.App - Running with Spring Boot v4.0.0-M3, Spring v7.0.0-M9 INFO example.springdata.aot.App - No active prof i le set, falling back to 1 default prof i le: "default" INFO RepositoryConf i gurationDelegate - Bootstrapping Spring Data MongoDB repositories in DEFAULT mode. INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server INFO example.springdata.aot.App - Started App in 0.177 seconds (process running for 0.436) faster startup
 was 0.793 (java) was 0.595 (aot) Java 25 > java -XX : AOTCache=app.aot -Dspring.aot.enabled=true - jar spring - data - mongodb - aot - optimization.jar Java AOT Cache Spring AOT support