Começando com o básico, aqui está uma definição informal de Registro:
Mas:
Dito isso, pode ser útil entender essa classe para trabalhar com o Tink de forma eficiente por enquanto.
O que acontece quando você chama getPrimitive()
em um identificador de conjunto de chaves? Ele encaminha sua
chamada para o Registry1, que contém objetos com métodos concretos para criar
chaves e primitivos, como uma
chave AesGcm ou uma instância ChunkedMac. A tarefa do registro é encaminhar a chamada
para o objeto correto. Isso só funcionará se o objeto estiver registrado. Por isso, é importante sempre registrar os primitivos que você vai usar.
E se eu usar uma biblioteca que já registrou os primitivos necessários?
Esse é exatamente o problema. E um dos motivos da remoção do Registry. Porque, nesse caso, o código funciona somente até que os autores da biblioteca decidam não registrar mais esse primitivo. Nesse ponto, o código falha e o motivo é confuso e não óbvio. Portanto, sempre registre o que você usa. Por exemplo, se você pretende usar o MAC no seu código Java, faça o seguinte na fase de configuração:
MacConfig.register()
Esse código garante que todos os objetos necessários sejam registrados nos locais necessários para usar o primitivo MAC.
Há mais um lado para esse problema. Algumas das suas dependências podem registrar coisas que você realmente não precisa e do que prefere não depender. Esse é outro motivo para remover o registro global.
-
à instância singleton global da classe Registry. Usamos o nome "Registro" para a classe e o singleton, de forma intercambiável. ↩