みけです。
本題
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 件のコメント:
コメントを投稿