事の発端は
でした。
SpringBoot で作ったアプリを Heroku で公開しようとした時にメモリを食いすぎて起動できなかったので、「Java でそういうの無理かな」と思ってた時に出会ったのがきっかけです。
実際のメモリ消費量がどのくらいなのかわからないのですが、まずはやってみようと言う事で調べた事を書き連ねていきます。
コードはこちら
Thymeleaf
最近のアプリでも使います...よね?何でもかんでも SPA じゃないと思いたい...と言うことでこいつと仲良しになってみます。
参考にしたのは、こちら
build.gradle
これを追加します。
implementation "io.micronaut:micronaut-views-thymeleaf" implementation "org.thymeleaf:thymeleaf:3.0.11.RELEASE"
application.yml
build.gradle に依存関係を追加すれば使えるようになるのですが、静的ファイルも取れるようにするのに以下の設定を追加します。
micronaut: router: static-resources: default: enabled: true mapping: /public/** paths: classpath:public
これで、"/public/***" の形で静的ファイルを取ってくることができます。
ログイン画面
Web アプリケーションって大体ログインから始まりますよね?と言うことでまずはログイン画面を出すようにしましょう。
LoginController
Controller はこんな感じです。
@Controller("/login") public class LoginController { @Get @View("login") public HttpResponse<String> index() { return HttpResponse.ok(); } }
やっぱり Spring っぽいですね。
@View
にはテンプレートファイルを指定します。src/main/resources/views/login.html
に html ファイルを配置しました。
実行
Micronaut 起動します。
$ ./gradlew run
SpringBoot より早い気がします。リフレクションベースでないので、class が増えた時もこんな感じで起動が早いと良いのですが...。
にアクセスすると、以下のような画面が表示されます。
メモ
試し方が悪かったのかもしれませんが、micronaut.views.thymeleaf.cacheable
を false にして template を変更した時に更新は反映されませんでした...。再起動しないと html の確認ができないのはちょっとツライです。
まとめ
今回はリクエストを受けてレスポンスを返すところまでやりました。 SpringBoot の開発に慣れている方は特に問題なく入れるんじゃないかと思います。
気が向いたら次回書きます。