Hier ist also die Geschichte:Wir fügen den Typ standardmäßig als eine Art Hinweis hinzu, welche Klasse tatsächlich instanziiert werden soll. Da Sie einen Typ eingeben müssen, um das Dokument über MongoTemplate
einzulesen trotzdem gibt es zwei Möglichkeiten:
- Sie geben einen Typ ab, dem der tatsächlich gespeicherte Typ zugeordnet werden kann. In diesem Fall berücksichtigen wir den gespeicherten Typ und verwenden diesen für die Objekterstellung. Klassisches Beispiel sind hier polymorphe Abfragen. Angenommen, Sie haben eine abstrakte Klasse
Contact
und IhrePerson
. Sie könnten dann nachContact
fragen s und wir im Wesentlichen müssen bestimmen Sie einen zu instanziierenden Typ. - Wenn Sie andererseits einen völlig anderen Typ übergeben, würden wir einfach in diesen gegebenen Typ marshallen, nicht in den tatsächlich im Dokument gespeicherten. Das würde Ihre Frage abdecken, was passiert, wenn Sie den Typ verschieben.
Sie könnten daran interessiert sein, sich dieses Ticket anzusehen, das eine Art austauschbare Typzuordnungsstrategie behandelt, um die Typinformationen in einen tatsächlichen Typ umzuwandeln. Dies kann einfach platzsparenden Zwecken dienen, da Sie vielleicht einen langen qualifizierten Klassennamen auf einen Hash aus wenigen Buchstaben reduzieren möchten. Es würde auch komplexere Migrationsszenarien ermöglichen, in denen Sie möglicherweise völlig willkürliche Typschlüssel finden, die von einem anderen Datenspeicher-Client erstellt wurden, und diese an Java-Typen binden.