Works by

Ren's blog

@rennnosuke_rk 技術ブログです

Spring

【Spring】Spring SecurityでCORS設定をする

Spring SecurityでCORSを使用した設定を行う方法を紹介します。 Spring Securityを導入することで、Springアプリケーションに手軽に認証・認可を仕組みを設定することができますが、認可の一環としてCORSの設定も行うことができます。 例えば、以下のような …

【Spring】Spring AOP - @AfterThrowing/@Around で例外を再スローする

Springアプリケーション内で発生する例外をSpring AOPでハンドリングする方法を紹介します。 ある特定の例外を別の例外として再スローするシーンがたまにあるのですが、SpringではこのようなときにAOPによる横断的な例外キャッチを使うと便利です。 例えばDD…

【Spring】Spring BootでのデフォルトのConponent Scan

Spring Initializrで生成したばかりのSpring Bootプロジェクトからアプリを実行すると、Component Scanの対象となるパッケージがデフォルトでトップレベルから実行されていることがわかります。 これは、下記の様な @SpringBootApplication アノテーションが…

【Spring】@AuthenticationPrincipal経由でセッションユーザ情報を取得する際のチェック事項

@AuthenticationPrincipal Spring Securityでは、セッションユーザ情報をシンプルに取得できるアノテーション @AuthenticationPrincipal が存在します。 (Javadocより) メソッドのパラメーターまたはメソッドの戻り値に Authentication.getPrincipal()をバ…

【Spring】Spring Cache でキャッシュ機能を利用する

Spring Cacheとは Spring Cacheのアーキテクチャ データ読み込み時の流れ Spring Cacheを構成するコンポーネント Cache AOP CacheManager ハッシュテーブル 実装 キャッシュ無効 キャッシュ有効 Spring Cacheの主な機能 @Cacheable キャッシュキー KeyGenera…

【Spring】Spring Sessionでセッション情報をDb2上に保存する

Spring でのセッション SpringではJava ServletのHttpSessionの仕組みを利用することができます。ServletのHttpSessionはSpringフレームワークの上に構築されたアプリケーション上でそのまま利用できるほか、Springの各種ライブラリによってラッピングされた…

【Spring Security】セッションのデフォルト有効期限は30分しかない

というかServletの仕様ですね。 Spring Securityにおけるセッションの有効期限 Spring Securityでは、セッション情報をJava Servletで扱うようなHttpSessionとして扱えます。またセッションに紐づく情報は、クッキーであるHttpCookieオブジェクトとして扱え…

【Kotlin/Spring】Kotlin版SpringBoot開発環境を構築する

Kotlin版Spring Boot開発環境構築のメモです。 検証環境はMac OS X Mojave 10.14.2 になります。 IntelliJ IDEのインストール 今回はIDEとしてIntelliJを使用します。 IntelliJはKotlinの開発元であるJetbrain社が開発していることもあって、Kotlinのサポー…

【Spring】@TransactionalでTransactionManagerを明示的に指定する

メモ。 TL;DR Spring で使用する@Transactionには、下記のように使用する Manager を明示できます。 @Transactional("jpaTransactionManager") 複数のTransactionManagerの定義と@Transaction Springにおける@Transactionは、デフォルトで用意されている一意…

【Spring/Jackson】Rest API : JSON RequestBodyのプロパティをEnum型としてマッピングする

メモ。 SpringのControllerでは、 @RequestBody を使用することでHTTPリクエストボディに設定されたパラメータをJSONで受け取ることができます。 @RestController public class FluitController { // Request Body にJSONを指定するAPI @RequestMapping(valu…

【Spring】オリジナルの `.properties` ファイルを作成・読み込み

メモ。 Spring では application.properties 以外に独自の .properties を生成し、その中で定義した値を使用することができます。 オリジナル .properties ファイルの作成とプロパティの参照 例えば、オリジナルのプロパティファイル myconfig.properties を…

【Spring】環境変数で適用するapplication.propertiesを切り替える

複数の application.properties の切り替え Springフレームワークでは、アプリケーション内で使う設定を application.properties に書き込み、実行時に設定内容を反映させることができます。 application.properties // DB接続先 spring.datasource.url=http…

【Spring Data JPA】@Queryによる更新/削除クエリには@Modifingアノテーションを付加する

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…