Spring
Spring SecurityでCORSを使用した設定を行う方法を紹介します。 Spring Securityを導入することで、Springアプリケーションに手軽に認証・認可を仕組みを設定することができますが、認可の一環としてCORSの設定も行うことができます。 例えば、以下のような …
Springアプリケーション内で発生する例外をSpring AOPでハンドリングする方法を紹介します。 ある特定の例外を別の例外として再スローするシーンがたまにあるのですが、SpringではこのようなときにAOPによる横断的な例外キャッチを使うと便利です。 例えばDD…
Spring Initializrで生成したばかりのSpring Bootプロジェクトからアプリを実行すると、Component Scanの対象となるパッケージがデフォルトでトップレベルから実行されていることがわかります。 これは、下記の様な @SpringBootApplication アノテーションが…
@AuthenticationPrincipal Spring Securityでは、セッションユーザ情報をシンプルに取得できるアノテーション @AuthenticationPrincipal が存在します。 (Javadocより) メソッドのパラメーターまたはメソッドの戻り値に Authentication.getPrincipal()をバ…
Spring Cacheとは Spring Cacheのアーキテクチャ データ読み込み時の流れ Spring Cacheを構成するコンポーネント Cache AOP CacheManager ハッシュテーブル 実装 キャッシュ無効 キャッシュ有効 Spring Cacheの主な機能 @Cacheable キャッシュキー KeyGenera…
Spring でのセッション SpringではJava ServletのHttpSessionの仕組みを利用することができます。ServletのHttpSessionはSpringフレームワークの上に構築されたアプリケーション上でそのまま利用できるほか、Springの各種ライブラリによってラッピングされた…
というかServletの仕様ですね。 Spring Securityにおけるセッションの有効期限 Spring Securityでは、セッション情報をJava Servletで扱うようなHttpSessionとして扱えます。またセッションに紐づく情報は、クッキーであるHttpCookieオブジェクトとして扱え…
Kotlin版Spring Boot開発環境構築のメモです。 検証環境はMac OS X Mojave 10.14.2 になります。 IntelliJ IDEのインストール 今回はIDEとしてIntelliJを使用します。 IntelliJはKotlinの開発元であるJetbrain社が開発していることもあって、Kotlinのサポー…
メモ。 TL;DR Spring で使用する@Transactionには、下記のように使用する Manager を明示できます。 @Transactional("jpaTransactionManager") 複数のTransactionManagerの定義と@Transaction Springにおける@Transactionは、デフォルトで用意されている一意…
メモ。 SpringのControllerでは、 @RequestBody を使用することでHTTPリクエストボディに設定されたパラメータをJSONで受け取ることができます。 @RestController public class FluitController { // Request Body にJSONを指定するAPI @RequestMapping(valu…
メモ。 Spring では application.properties 以外に独自の .properties を生成し、その中で定義した値を使用することができます。 オリジナル .properties ファイルの作成とプロパティの参照 例えば、オリジナルのプロパティファイル myconfig.properties を…
複数の application.properties の切り替え Springフレームワークでは、アプリケーション内で使う設定を application.properties に書き込み、実行時に設定内容を反映させることができます。 application.properties // DB接続先 spring.datasource.url=http…
TD;DR Spring Data JPAのRepositoryに@Queryで更新/削除クエリを定義するとき、@Modifingアノテーションを付加します。 @Modifing @Transactional @Query(value = "DELETE FROM PHOTO AS p WHERE p.USER_ID = :userId", nativeQuery = true) public void del…