Beginnen wir mit den Grundlagen. Hier ist eine informelle Definition von Registry:
Aber:
Dennoch kann es hilfreich sein, diese Klasse zu verstehen, um effizient mit Tink arbeiten.
Was passiert, wenn du getPrimitive()
für einen Keyset-Handle aufrufst? Es leitet Ihre
Rufen Sie die Registry1 auf, die Objekte mit konkreten Methoden zum Erstellen
Schlüssel und Primitive, z. B. ein
AesGcm-Schlüssel oder eine ChunkedMac-Instanz. Die Aufgabe der Registry ist, den Aufruf weiterzuleiten.
zum richtigen Objekt hinzufügen. Dies funktioniert nur, wenn das Objekt registriert ist.
ist es wichtig, die zu verwendenden Primitive immer zu registrieren.
Aber was ist, wenn ich eine Bibliothek verwende, in der die benötigten Primitive bereits registriert sind?
Genau das ist das Problem. Und einer der Gründe, warum Registry entfernt wird. In diesem Fall funktioniert Ihr Code nur so lange, bis die Bibliotheksautoren sich dafür entscheiden, können wir diese Primitive nicht mehr registrieren. An dieser Stelle funktioniert der Code nicht mehr nicht offensichtlich und verwirrend. Registrieren Sie also immer, was Sie verwenden. Wenn Sie beispielsweise MAC in Ihrem Java-Code verwenden möchten, sollten Sie in der Einrichtungsphase folgende Schritte ausführen:
MacConfig.register()
Dieser Code stellt sicher, dass alle erforderlichen Objekte im für die Verwendung der MAC-Primitive erforderlich.
Es gibt eine weitere Seite zu diesem Problem. Einige Ihrer Abhängigkeiten werden möglicherweise registriert Dinge, die Sie eigentlich nicht brauchen und auf die Sie sich nicht verlassen möchten. Dies ist einen weiteren Grund für die Entfernung der globalen Registry.
-
zur globalen Singleton-Instanz der Klassen-Registry. Wir verwenden den Namen "Registry". die Klasse und den Singleton austauschbar. ↩