きっかけ
安かったので買ってみたSpringBootの本に、Groovyで動かしている内容を見て、興味が湧いたので真似てみた。
実験
環境
OS
$sw_vers ProductName: Mac OS X ProductVersion: 10.14.2 BuildVersion: 18C54
Spring Boot CLI
$spring --version Spring CLI v2.1.2.RELEASE
homebrewで入れようとしたんだが、xcodeのバージョンが古いからダメですと言われて、かなり萎えた。。。
xcodeって、サイズが大きいから、アップデートするのシンドいんだよね。。。
ちなみに、homebrewでの入れ方は、下記。
$ brew tap pivotal/tap $ brew install springboot
Groovy
Groovy Version: 2.5.5 JVM: 11.0.1 Vendor: Oracle Corporation OS: Mac OS X
実装
作るのは1クラスだけ。
@RestController class App { @RequestMapping("/") def saga() { "Hello Saga!" } }
Groovyだと、直後にメソッドから抜けることが確定してる式は、returnを省略できるので、"Hello Saga!"
だけでいい。
実行は、spring run app.groovy
でOK
しばらくすると、お馴染みのSpringBoot起動のコンソールが流れるはず。
俺の環境では、実行までにかなり時間がかかった。
こんなに遅かったか?と思って、Javaで書いたのを実行したら、ものすごい速かった。
groovyファイルをコンパイルするにしては長かった。
メッセージの内容をみていると、依存関係の解決が長かったので、groovyのコンパイルにひきづられて、何かの依存関係の解決もやり直しになってるんだろうなって推測。
詳しく調べるとハゲそうなので、とりあえず保留。
実行して、ブラウザでアクセスすると、Hello Saga!
って出るはず。
ちなみにJavaで書いた時の記述
App.java @RestController class App { @RequestMapping("/") public String saga() { return "Hello Saga!" } }
groovyは、java特有の宣言記述が省略されてるのがよくわかる。