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