2017-05-25 2 views
0

Wie kann ich den folgenden Code Umgestalten ObjectReader (Single Instance von ObjectReader) mitWelche Vorteile hat die Verwendung von ObjectReader über ObjectMapper?

private MessageStructure parseSQSMessageToMessageStructure(final String queueMessage) 
    throws IOException, ObjectMapperException { 

    JsonNode messageAsJSON = objectMapper.readTree(queueMessage); 
    JsonNode messageAsJSONKey = messageAsJSON.get(MESSAGE_JSON_KEY); 
    return objectMapper.readValue(messageAsJSONKey.textValue(), MessageStructure.class); 
} 
+2

Ihr Titel und Körper stellen völlig andere Fragen. – shmosel

+0

Ich habe Code mit ObjectMapper geschrieben, ich habe mehrere StackOverflow-Posts durchlaufen, wo ich gelernt habe, dass ObejctMapper im Vergleich zu ObjectReader nicht Thread-sicher ist. – user3802722

+0

In Bezug auf das Code-Snippet, möchte ich wissen, wie kann ich den obigen Code mit dem ObejctReader anstelle von ObjectMapper Refactor? – user3802722

Antwort

1

Wie @shmosel sagt: Ihre Frage nicht mit dem Titel.

Wenn Sie die Instanz ObjectMapper durch ObjectReader ersetzen möchten, ersetzen Sie die folgende Zeile.

Von:

return objectMapper.readValue(messageAsJSONKey.textValue(), MessageStructure.class); 

To-be:

return objectReader.readValue(messageAsJSONKey.textValue(), MessageStructure.class); 

Der obige Code-Schnipsel übernimmt objectReader eine Instanz ObjectReader Klasse.

Unten ist die Information, die ich von JavaDocs von ObjectReader bezüglich seiner Leistung erhielt.

Verwendet "mutiertes Fabrik" -Muster, so dass Instanzen unveränderlich sind (und folglich völlig threadsicher ohne externe Synchronisierung); neue Instanzen werden für verschiedene Konfigurationen erstellt. Instanzen werden anfänglich von {@link ObjectMapper} erstellt und können wiederverwendet werden, freigegeben, zwischengespeichert; sowohl wegen der Fadensicherheit als auch weil die Instanzen relativ leicht sind.

Hoffe, das hilft!

Verwandte Themen