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をおします。
(何度も出ていますね。このパターン)
色々と制約が出てきます。
とりあえず、ここでは、
の二つの制約を与えたいと思います。
なんかソースが更新されたようですね。
同じような感じで、次のフィールドも追加したいと思います。
- フィールド : 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) 参考文献