ジャクソン図書館のObjectMapper
クラススレッドセーフのようです。
ObjectMapper
これは、次のように静的フィールドとして宣言する必要があることを意味しますか?
class Me {
private static final ObjectMapper mapper = new ObjectMapper();
}
代わりに、次のようにインスタンス レベルのフィールドとして使用しますか?
class Me {
private final ObjectMapper mapper = new ObjectMapper();
}
ベストアンサー1
はい、それは安全であり、推奨されます。
参照したページの唯一の注意点は、マッパーが共有されると、その構成を変更できないことです。ただし、構成は変更していないので問題ありません。構成を変更する必要がある場合は、静的ブロックから変更すれば問題ありません。
編集: (2013/10)
2.0 以降では、さらに優れた方法があることに留意して、上記を拡張できます。ObjectWriter
およびObjectReader
オブジェクトを使用します。これらは によって構築できます。これらは完全に不変で、スレッドセーフです。つまり、スレッドセーフの問題 (コードがインスタンスを再構成しようとした場合ObjectMapper
に で発生する可能性がある) が発生する可能性は理論的にもありません。ObjectMapper