暇な日々にスパイスを

学んだ技術の備忘録

Spring Boot 20 実行時のコンソール廃止

Spring Bootで作成したアプリケーション(jar)をWindowsで実行時にはコンソールに表示していました。
ログも流れて確認しやすいですし、終了時はコンソールを閉じれば良いため便利でした。

しかし、コンソールを閉じるとアプリケーションも強制終了してしまいます。 複数人が利用するサーバの場合は問題が発生する可能性があります。

そこで、コンソール表示を廃止するようにしました。

続きを読む

Spring Boot 19 CORSを許可する

Spring Bootで実装したAPIを、異なるドメインのページからAjaxで呼び出した際に以下のエラーが発生し、Ajax側がこけます。

No 'Access-Control-Allow-Origin' header is present on the requested resource. 

セキュリティ上、異なるドメインAjaxで呼び出す場合はヘッダに色々と情報を詰める必要があるようです。 下記記事を参考に、SimpleCORSFilterを実装しました。 qiita.com

これで、異なるドメインからの呼び出しも大丈夫になりました。

JavaScriptはクライアントサイドなので改ざんされる恐れがあるとはいえ、Serverサイドに許可設定を記載したらOKになるというのも、セキュリティ上不思議な気がします。

Java CamelCaseとsnake_case

Spring Bootの実装時に微妙に困ったことです。
Javaは基本的にCamelCaseです。
JSONはsnake_caseです。

リクエスト、レスポンスの対象名が微妙に異なります。 Jacksonの機能を利用することで、ある程度は自動化できるようです。
qiita.com

しかし、Sprong BootでValidationのエラー対象名にはJavaの変数名で格納されています。
調べましたが、自動変換が発見できませんでした。

エラー時のレスポンスに対象名とメッセージを格納したいだけだったので、格納時に変換メソッドを呼ぶようにしました。

変換メソッドは下記を参考にしました。
qiita.com

JSONの対象名でエラーメッセージが表示されるようになりました。

SpringBoot 18 エラー時のデフォルトレスポンスを実装

SpringBootではエラー時のデフォルトレスポンスが実装されています。

StackTraceまで表示されるのはデバッグ時には便利ですが、ユーザには見せたくありません。
また、独自のエラーレスポンスで置換えたい時があります。

そこで、デフォルトレスポンスを実装し直します。

続きを読む