Tagbangers Blog

Spring

Spring I/O 2016の資料が少しずつあがってきました!-part1-

先月参加したSpring I/O 2016 の動画等が徐々にアップされてきているのでまとめてみます。 とりあえず1日目から!! ■CUSTOMIZE YOUR SPRING BOOT EXPERIENCE BY WRITING YOUR OWN SPRING BOOT STARTER(MICHAEL SIMONS) https://github.com/michael-simons/springio2016 ■10 WAYS TO GET SUPER-PRODUCTIVE WITH SPRING BOOT(BRIAN CLOZEL ANDSTÉPHANE NICOLL) https://git...

Notes on Reactive Programming Part I: The Reactive Landscape - DAVE SYER氏のSpringブログ(日本語超訳) 途中

またSpring blogの超訳を載せたいと思います。今回はDave Syerさんの6月7日の記事です。オリジナルはこちらです。 Reactiveプログラミングというのはとてもおもしろく、今のところ色々いわれているようですが、部外者や筆者のようなエンタプライズJava開発者からするとすべての概念がわかりやすいとはいえません。 本記事によって「何がそんなに盛り上がってるか」について、みなさんの理解がクリアになればと思います。 アプローチとしてはできるだけ具体的なことを書くようにします。もっと学術的なアプローチやHaskellで書かれた大量のコードサンプルを探しているのであれば別のサイトをググッて...

Reactive Spring - Rossen Stoyanchev氏のSpringブログ(日本語超訳)

少し古いのですがSpringブログでのROSSEN STOYANCHEV さんの記事(2016/2/9投稿)の日本語超訳をしたいと思います。 オリジナルはこちらを参照してください。 Reactive Spring SpringOne2GX 2015 にてJuergenがSpring Framework 5 についての計画を発表しました。 これは主にReactiveアーキテクチャにフォーカスしたものになります。 それから着実に取り組みが進行中で、多くの成果が現れてきています。 そもそもReactiveプログラミングモデルはサービスとアプリケーションをノンブロッキングで書くことができるものです。 ...

Spring MVC でリダイレクトさせないときでも RedirectAttributes を使いたい

ちょっと意味不明なタイトルになってしまいましたが、RedirectAttributes を使うとリダイレクト先のページのまで有効ないわゆる Flash スコープが使えます。 とても便利な機能ですが、これをリダイレクトではなく単なるページ遷移の時にも使う場合は以下のように自身で FlashMapManager#saveOutputFlashMap をコールすることで実現できます。 FlashMap flashMap = RequestContextUtils.getOutputFlashMap(request); flashMap.put("message", "Hello!"); Requ...

Spring Security でマルチテナントしたときの Remember-me 認証対応

下記のログイン画面のように、ID と それ以外のパラメータを用いて認証した場合の Spring Security の Remember-Me 認証方法をご紹介。 ソースコードは GitHub (https://github.com/tagbangers/spring-best-practice...) で公開しています。 Spring Security は Remember-Me 認証の実装の1つとして、PersistentTokenBasedRememberMeServices クラスを提供している。PersistentTokenBasedRememberMeServices はログイン情報...

Spring の小粋なクラス Part1 - AbstractPersistable

今回の小粋なクラスは、 org.springframework.data.jpa.domain.AbstractPersistable (spring-data-jpa-1.9.2.RELEASE) JPA を使う時に Entity の親クラスとしてとりあえず継承しておくといい。 AbstractPersistable は JPA における主キーをあらわすメソッドと、主キーベースの #equals(Object) と #hashCode() メソッドが提供される。 下記のリファレンスにもあるとおり、Hibernate ではオブジェクトの等価性を使って同一のデータベースのレコードかどうかを判断す...

Spring Boot で Hibernate Search のマルチテナンシーをやってみる

Hibernate Search がマルチテナンシーに対応したので、Spring Boot と組み合わせて試してみた。 試した環境は下記の通り。 Spring Boot 1.2.5.RELEASE Hibernate Search 5.3.0.Final サンプルコードはここにも置いてあります。 https://github.com/tagbangers/spring-best-practices/tree/master/spring-best-practice-hibernate-search-multi-tenancy マルチテナンシー (multi-tenancy) ってなに? ひとつの...

Spring MVC で Post-Redirect-Get パターンをやってみる

Spring MVC で Post-Redirect-Get パターンを実装するときのやり方をメモ。 コードは GitHub にもあります。 https://github.com/tagbangers/spring-best-practice... パターン1:セッションを使わない package practice.post_redirect_get; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.val...

​Spring MVC @RequestMappingのマッピング優先度まとめ

Controllerに使う@RequestMappingにはURIの変数や正規表現などいろいろなパターンを指定できますが、どのコントローラにマッピングされるかという優先度をいつも忘れてしまうのでまとめてみます。 ちなみにパターンとして記述できる記号についてはAntPathMatcherのAntPatternComparatorの中で説明されているようで そのdocによると、 ? → 1文字にマッチ * (ワイルドカード) → 0かそれ以上の文字数にマッチ ** (ダブルワイルドカード) → 0かそれ以上のディレクトリにマッチ という意味になってます。 URI変数({variables})とワイ...

​@EnableGlobalMethodSecurity を Controller クラスで使うメモ

Spring Security で @EnableGlobalMethodSecurity を用いれば、メソッドレベルでアクセスコントールが可能になるが、Service クラスレイヤーではなく、Controller レイヤーで使用する場合はちょっと注意が必要。 Spring MVC の基本設定パターンでは、たいてい ServletMapping ごとにサブのアプリケーションコンテキストが生成され、ルートコンテキストのみに、@EnableGlobalMethodSecurity を適用してもそのままでは Controller クラスに @Secure などを指定しても動作しない。 これに関連する...