JPAエンティティをラップするUIオブジェクトがあり、そのUIオブジェクトのコンストラクターで、いくつかのプロパティの遅延読み込みを行います。その同じコンストラクターで、現在アクティブになっている JsonView を知る必要があるため、List ビューなどの不要なフィールドを遅延ロードしません。コンストラクターから、実行時に現在アクティブな JsonView を見つける方法はありますか。または、私が上で説明したことを達成する他の方法はありますか。
私の現在の計画 では、シリアル化中に、シリアル化するオブジェクトの setJsonView(Class jsonView) を呼び出すカスタム シリアライザーを作成します。シリアル化されたすべてのオブジェクトは、そのメソッドをサポートする必要があります。その metid 内で、現在知られている json ビューに基づいて遅延読み込みを行うことができます。このようなもの:
public class JsonViewSerializer extends JsonSerializer<BaseSerializableEntity> {
@Override
public void serialize(BaseSerializableEntity value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
value.setJsonView(provider.getSerializationView());
// need to pass serialization to base class...
}
}