Spring data mongo 基于注解(@Indexed)自动创建索引源码定位

背景

Spring data mongodb Entity 字段有如下定义

@Indexed(unique=true)
private String uid;

Spring 应用启动的时候会执行createIndexes 如下所示
Spring data mongo 基于注解(@Indexed)自动创建索引源码定位

想知道是在什么地方执行的createIndexes的?

定位源码步骤如下

  • 应该会通过反射获取字段的注解 对如下方法加上断点
java.lang.reflect.Field#getAnnotation

并且添加进入断点的条件:

annotationClass.getName().contains("org.springframework.data.mongodb.core.index.Indexed")
  • 断点调试定位源码

最终定位到是在如下代码处执行创建索引操作的

org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator#createIndex

Spring data mongo 基于注解(@Indexed)自动创建索引源码定位

相关推荐