DTO シリアル化中の Spring Boot アプリケーションでの StackOverflowError の問題

王林
リリース: 2024-02-05 23:06:04
転載
586 人が閲覧しました
質問内容

自己参照関係を使用して dto クラス (nodeattributesdto) をシリアル化しようとすると、スプリング ブート アプリケーションで stackoverflowerror が発生します。 dto クラスの tostring メソッドの実行中にエラーが発生します。

nodeattributes.java:

リーリー

nodeattributesdto.java:

リーリー

ポストマッピングリクエストテキスト:

リーリー ###間違い:### リーリー ###質問:###

シリアル化中のスタックオーバーフローエラーを回避するために、nodeattributesdto クラスの tostring メソッドを変更するにはどうすればよいですか?

dtos で自己参照関係を扱うときに考慮すべき特定のジャクソン アノテーションまたは構成はありますか?
  1. ###環境: スプリングブートバージョン: 2.7.2 Java バージョン: 17 データベース: postgresql
  2. ###私はもう試した: ###
  3. さまざまなジャクソンアノテーション (@jsonmanagedreference、@jsonbackreference)

正解
  • あなたが混乱しているのは、toString が Spring Boot のマーシャリングを制御しないということだと思います。
System.err.println() を介してこのオブジェクトを標準エラーに記録する場合は、toString を使用します。

あなたの toString は本質的にデータの再帰ダンプになろうとしているように見えますが、それは正しくありません。基本的な Java/CS だと思います。


toString では、現在のノードのデータを出力し、すべての子ノードで toString(delagate) を呼び出すことができます。これはできるはずです。 「ツリー」の最上部から開始するため、一般に(toStringの)後方参照は必要ないと思います。

マーシャラーはオブジェクトを検査し、リフレクションを使用してシリアル化された表現を構成します。お気づきのとおり、これは特定の注釈を尊重します。たとえば、@JsonIgnore。

参照:

JSON でフィールド応答を無視するにはどうすればよいですか?

ここにはたくさんの有益な情報があります:

https://www.php.cn/link/ffe4a40fecc90fa1120088e704712fb2

コード生成ツール (jhipster など) の外部で単純な Web サービスを作成して、舞台裏で何が起こっているかを理解し、生成をより適切に制御することも役立つ場合があります。

以上がDTO シリアル化中の Spring Boot アプリケーションでの StackOverflowError の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!