Этот пример должен помочь
Определить свой класс сущностей как
@Document(collection = "${EventDataRepository.getCollectionName()}")
public class EventData implements Serializable {
Определить пользовательский интерфейс репозитория с методами получения и установки для "collectionName"
public interface EventDataRepositoryCustom {
String getCollectionName();
void setCollectionName(String collectionName);
}
Предоставьте класс реализации для пользовательского репозитория с реализацией "collectionName"
public class EventDataRepositoryImpl implements EventDataRepositoryCustom{
private static String collectionName = "myCollection";
@Override
public String getCollectionName() {
return collectionName;
}
@Override
public void setCollectionName(String collectionName) {
this.collectionName = collectionName;
}
}
Добавьте EventDataRepositoryImpl в список расширений вашего интерфейса репозитория, в этом случае он будет выглядеть как
@Repository
public interface EventDataRepository extends MongoRepository<EventData, String>, EventDataRepositoryImpl {
}
Теперь в вашем классе Service, где вы используете MongoRepository, установите имя коллекции, это будет выглядеть как
@Autowired
EventDataRepository repository ;
repository.setCollectionName("collectionName");