パラメータ名は通常、実行時にJavaコードからアクセスできません(コンパイラによってドロップされるため)。そのため、その機能が必要な場合は、Java 8の組み込み機能を使用するか、アクセスを取得するためにParaNamerなどのライブラリを使用する必要があります。それに。
したがって、Jacksonを使用するときにコンストラクターの引数にアノテーションを使用する必要がないようにするために、次の2つのJacksonモジュールのいずれかを利用できます。
jackson-module-parameter-names
このモジュールを使用すると、Java 8を使用しているときに注釈のないコンストラクター引数を取得できます。これを使用するには、まずモジュールを登録する必要があります。
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new ParameterNamesModule());
次に、-parametersフラグを使用してコードをコンパイルします。
javac -parameters ...
リンク:https : //github.com/FasterXML/jackson-modules-java8/tree/master/parameter-names
jackson-module-paranamer
これは、モジュールを登録するか、注釈のイントロスペクションを構成することを要求するだけです(ただし、コメントで指摘されているように両方は必要ありません)。これにより、1.8より前のバージョンのJavaで注釈のないコンストラクター引数を使用できます。
ObjectMapper mapper = new ObjectMapper();
// either via module
mapper.registerModule(new ParanamerModule());
// or by directly assigning annotation introspector (but not both!)
mapper.setAnnotationIntrospector(new ParanamerOnJacksonAnnotationIntrospector());
リンク:https : //github.com/FasterXML/jackson-modules-base/tree/master/paranamer