2012年12月2日日曜日

今更Spring Rooを紹介しる

10月くらいから冬眠し始めて、気付いたら12月になってました。

みけです。


本題


12月といったらAdvent Calendarということで、

このエントリーは「Spring Framework Advent Calendar 2012」の二日目となります。

なお昨日、つまりトップバッターは@makingさんで、

STSでSpringMVC+SpringDataJPA+HibernateなPre-Configuredテンプレートプロジェクトをクイックスタート! #jsug」でした。


Spring Roo


まあ、僕は結構めんどうくさがりなので、

pom.xmlとか書くのが嫌だし、

Springの他にHibernateとかの設定をするのも

まあ、正直面倒だと思ったりするわけです。


で、二~三年くらい前に初めてSpring Rooを知ったときは、

うわ、めっちゃ楽そうやん!と衝撃を覚えたものです。


というわけで、Spring Rooの紹介をしたいと思います。


Get Started


Spring Rooのサイトに行ってダウンロードして、

パスを通すだけです。

今回はWindowsでやっていますが、Macでも変わりありません。

roo とコマンドを打って次のような画面が出れば、

インストール完了です。




至れり尽くせり


さて、何やればいいかわかりませんね。

そういう場合はhintと入力します。




projectコマンドを入力して、

そのうえで、TABを入力してとメッセージが出ます。


そのとおりにやってみましょう。




--topLevelPackageというオプションが自動的に

示唆されました。

ここでは、プロジェクトのパッケージ名を入力してとのことだそうです。


パッケージ名称を入力して、Enterを押します。



おお、なんか出来上がったっぽいですね。

実際に何が出来たか見てみましょう。



  • pom.xml
  • log4j.properties
  • applicationContext.xml

この三つのファイルが出来上がっています。


さて、次に何すればいいのでしょう?

ここでもhintコマンドを入力しましょう!




はい、データベースの設定をしてね、

と指示されます。

JPAかmongDBのどちらかを設定してあげます。


まあ、Spring Advent Calendarということで、

Spring DATAを用いてmongoDBとつなげる的な

エントリーはきっと誰かやってくれるので、

ここでは普通にJPAを選択します。


jpa setup

と入力して、TABを三回入力してねと言われているので、

そのとおりやってみます。




3回押した結果がこれだよ~(´・ω・`)


JPA実装をどれにするのか聞かれます。

まあ、ここは皆さん大好きHibernateにしましょう。

H を入力してTABを押します。




HIBERNATEと補完してくれます。

続いてTABを入力します。




すると我々は、--database オプションの指定を強制されているんだ

って状態になります。

まあ、何を入力すればいいかわからないので、

TABを打ちましょう。




データベースを何にするかを選べという事ですね。

とりあえず、MYSQLかな…

MYまで打ってTABを入力します。




はい、MYSQLと補完してくれました。

次は何を…TABです。





あれ、補完されませんね。

じゃあ、このままENTERを押しちゃいましょう。




お、なんかいろいろアップデートされたみたいですね。




  • persistence.xml
  • database.properties

の二つのファイルが追加されたようです。





とまあ、プロジェクトを始めるにあたって、

hintとTABを押していればなんかプロジェクトが勝手にできてきます。

楽ですね~


実際にアプリケーション作ってみるよ!


引き続きhintを入力します。




あはは、もう、エンティティを作れるよ~!
entと入力して、
--classと出たらエンティティの名前を指定して、
もし、なんかオプションが必要なら--を入力して、
TABを押してねぇ~(・ω<)。 って感じのメッセージが出ています。


とりあえず、言われるがままに打ち込んでみます。




とりあえず、Goods(商品)というエンティティでも作ります。




(補足:正確にはパッケージ名を入力したほうがよいです。
この場合はentity jpa --class ~.model.Goods --testAutomatically


なんか色々ファイルが作成されます。

どうやらエンティティは作れたっぽいですね。

でも、次に何すればいいのでしょう?

というわけでhintを入力します。




フィールドを追加する場合はfieldと入力して、

TABを押しなさいということだそうです。


というわけで、fieldの後に二回TABを入力すると

ヒントが表示されます。




次にデータの型を入力します。

idを作りたいので、とりあえずnumberにしてみます。

numberと入力してTABを入力。




--fieldNameオプションと--typeオプションが示唆されます。

--fieldNameにはフィールド名(id)を入力し、

--typeにはlongを入力しようと思います。




さて、なんか制約を儲けたいですね。

そんな場合には--を入力してからTABをおします。

(何度も出ていますね。このパターン)




色々と制約が出てきます。

とりあえず、ここでは、

  • --notNull
  • --unique

の二つの制約を与えたいと思います。




なんかソースが更新されたようですね。


同じような感じで、次のフィールドも追加したいと思います。


  • フィールド : name / 型 : String / 制約 : notNull, sizeMax=80
  • フィールド : price / 型 : BigDecimal / 制約 : notNull, decimalMin=0




はい、なんか追加されたっぽいですね。

とりあえず、商品番号とか、商品名とか価格なんてカラムを作ったので、

アプリっぽくなって来ました。


後は画面を作っちゃいましょう。


何をすればいいのかわからないので、

TABを入力します。




とりあえず、画面っぽいコマンドはwebでしょうか…

web TAB TAB と入力します。




とりあえず、mvcと入力しちゃいましょう。




まだ何もやっていないので、setup を入力します。




なんか、めちゃめちゃファイルが出来ました…


さて、次はweb mvc all --package ~.webと入力します。(※1)




なんか画面関係のファイルが出来たっぽいですね。

楽ですね~!



動かす前に


データベースの設定をしていませんでした。

というわけで、設定しちゃいましょう。


データベース


mysqlに作ったスキーマを設定します。

使うコマンドは以下のとおりです。(※1)

  • properties set --name database.properties --key database.password --value [パスワード]
  • properties set --name database.properties --key database.username --value [ユーザー名]
  • properties set --name database.properties --key database.url --value [データベースのURL]




いざ、動かさん!



Rooコンソールを終了して、mavenでjettyを起動します。

roo > quit
$ mvn jetty:run



初回起動時はたくさんのライブラリーを落としてきますので、

結構時間がかかります。




はい。

なんか画面出てきましたね。


ちょっといろいろと触ってみましょう。

左のメニューから「Create new Goods」を選びます。




適当な数字を入れて「SAVE」ボタンを押すと、

ちゃんとValidationやってくれていますね。


では、適当にデータを登録・操作してみましょう。






なんか、簡単にできましたね。


一応、結論


実はここまでIDEが登場していません。

IDEなしでもここまでできるのです。

凄いですねぇSpring Roo。

プログラミングレスって言葉が大好きなSIerさんには受けがいいと思います。

というわけで、Springアプリケーションを作る時に、

Spring Rooを使ってみては如何でしょうか?


さて、明日は


明日は個人でもSpring Advent CalendarをやっているTugu Katagiriさんです。

よろしくお願いします。





(※1) 参考文献


0 件のコメント:

コメントを投稿