SpringBoot覚書

BackBone.js本を買って写経をしようかと思いましてん。

入門Backbone.js

入門Backbone.js

で、その際サンプルとしてtwitterのクライアントを作るみたいなのがあり、これはモチベーション上がりそうだとやろうとしたのですが、現在のtwitter apiはOAuthが必須なので残念ながらクライアントサイドからJavaScriptで実施できない。ということで、面倒だけどサーバーサイド作成が必須…。BackBone本にはNode.jsでサーバーを作成する例があったが、いや業務でNode.jsやる機会もなかなかなかろうと…。ということで、良い機会なのでSpringBootを試してみた。

以下、参考書。

んでもって、やったら結構ハマったので、ハマリポイントの覚書。

1)data.sql,schema.sql
/src/main/resources/にDDLDMLをおいておくと起動時に勝手に実行してくれる。ただし、デフォルトではJPAによるスキーマ自動生成が有効になっているので、再度drop/createされてしまう。上記を避けるためには、application.propertiesに以下の設定が必要。

spring.jpa.hibernate.ddl-auto = none

2)thymeleaf
普段JSPばっかなので結構ハマる。目的がthymeleafではなかったので斜め読みしたのがいかんかったか…。で、thymeleafはデフォルトではXHTML前提で動作するのだけど、正直面倒なので、nekoHtmlを使う方が楽かもしれない。ついでに開発中は、キャッシュはオフる。

spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.cache=false

3)ワンタイム・トークン(CRSFチェック)
SpringBootでは、ワンタイム・トークンチェックをデフォルトで行う設定になっている。(Spring的には、CsrfRequestDataValueProcessorというのを設定すると有効になるらしい。)で、thymeleafを使用した場合、どうも挙動を見る限り、<form>タグのactionを@{/path}で置換する設定にしないと、トークンが自動的には埋め込まれないようにみえる。まぁ、普通は設定するからいいんだけど、実装ミスった時とかに原因がわからず、割とハマった。

4)ベーシック認証
基本だけど、SpringSecurityを設定すると、デフォルトではベーシック認証が行われる。以下の設定で解除できる。

security.basic.enabled=false

5)twitteroauth認証
色々記載があってわからんかったが、結局認証先の接続情報を永続化する必要がなければ以下の対応が一番簡単ぽい。ということで、今回はひとまずそうした。
http://qiita.com/tsuyogoro/items/6225913d50a36bfe735e

ぶっちゃけ最近までStruts1系どっぷりだったので、難民的にはSpringは正直広大だなぁ…と思いましてん。
その他、昨日〜今日の作業で良さそうなサイトをメモしておしまい。

    1. SpringBoot(with Thymeleaf)チートシート
    2. @RequestParamを使ってリクエストパラメータを受取る(クエリストリングをコントローラで受け取る方法)
    3. Spring MVCのコントローラでの戻り値いろいろ 
    4. thymeleaf 
    5. SpringBootでのインターセプターに関して (MVC用のインターセプターがあるらしいのでその話)
    6. TERASOLUNA Server Framework for Java (5.x) (ほとんど素のSpringなのでは。。。)