怠惰系エンジニアのメモ帳

勉強した内容をメモしていきます。

【Spring + Doma】ドメインクラスを、フォームクラスのフィールドとして使用する

DomaではドメインクラスというValueObjectを使用できますが、どうせならフォームクラスのフィールドとしても使用したいなと思って検証してみました。
※そもそもドメインクラスをフォームクラスのフィールドとして利用するのはどうなのか、という疑問はあります。(個人的には有りな気がしてます)
記載内容に間違いなどがありましたら、指摘をお願いします。

結果

結果から書くと、

  • ドメインクラスにString型の引数を1つ受け取る非privateなコンストラクタ、またはpublicなstaticファクトリメソッドを定義すればいい

でした。 ドメインクラスとは書いてますが、ドメインクラス以外の任意クラスにも応用できるはずです。(ドメインクラスはDoma上の表現なので当たり前ですが)

続きを読む

Spring Web Flux + Thymeleaf で画面出力する

過去に同じことやろうとしてダメだったので、リベンジ。

Spring Web Flux + Thymeleaf で画面出力したかった

内容に間違いなどがあれば指摘をお願いします。

やりたいこと

前回と同じく、SpringWebFluxThymeleaf で GetWild する。
ルーティングはアノテーションベースと、RouterFunctionsの2パターンで実施。

結論

先に結論を書くと、

  • RouterFunctionsの場合には、ServerResponse.BodyBuilder#render メソッドに、表示するビュー名を渡す。
    • 表示に必要なデータは、render メソッドの第二引数に指定する。
  • アノテーションベースの場合にはメソッドの戻り値を Mono<String> にして、ビュー名を Mono でラップする。
    • 表示に必要なデータは、SpringWebMvc の時と同じように Model 等に設定する。

です。

続きを読む

「【勉強会】20代エンジニアのキャリア論」に参加してきた

サポーターズCoLabの勉強会「【勉強会】20代エンジニアのキャリア論」に参加させていただいたので、参加した感想を書いていこうと思います。

supporterzcolab.com

参加した目的

  • 今後のキャリアをどうするか悩んでいるので、解決の糸口を掴みたかった
  • 20代エンジニアと交流がしたかった。
    • 同世代の方がどんなことを思っているのか知りたい。

のが理由として大きいです。

3年目になって、仕事のとか今後について考えることが多くなりました。
そんな時にピッタリな勉強会が開催されるということで、参加させていただきました。

続きを読む

Spring Web Flux + Thymeleaf で画面出力したかった

Spring Framework5で追加されるSpring Web Flux と 、Thymeleaf で画面出力したかたが…できなかった。
(具体的には RouterFunctions でルーティングを定義したアプリでThymeleafが使えるのか知りたかった。)

もし解決方法をご存知の方がいらっしゃったら、ご教示いただけると幸いです。
また、記載内容等に間違いがある場合はご指摘お願いします。

(2017/08/08 追記) 画面出力できました。 Spring Web Flux + Thymeleafで画面出力する

※そもそも、WebFluxで画面描画って想定されているのか疑問…。

原因

指定されたViewを返す ThymeleafReactiveViewResolver に、getApplicationContext() が実装されていなかったため、Viewを返せなかったことが原因っぽい。

java.lang.NoSuchMethodError: org.thymeleaf.spring5.view.reactive.ThymeleafReactiveViewResolver.getApplicationContext()Lorg/springframework/context/ApplicationContext;
    at org.thymeleaf.spring5.view.reactive.ThymeleafReactiveViewResolver.loadView(ThymeleafReactiveViewResolver.java:581) ~[thymeleaf-spring5-3.0.6.M4.jar:3.0.6.M4]
    at org.thymeleaf.spring5.view.reactive.ThymeleafReactiveViewResolver.resolveViewName(ThymeleafReactiveViewResolver.java:569) ~[thymeleaf-spring5-3.0.6.M4.jar:3.0.6.M4]
    at org.springframework.web.reactive.function.server.DefaultRenderingResponseBuilder$DefaultRenderingResponse.lambda$writeTo$0(DefaultRenderingResponseBuilder.java:163) ~[spring-webflux-5.0.0.BUILD-20170630.222607-342.jar:5.0.0.BUILD-SNAPSHOT]

今回使用したThymeleafのバージョンは3.0.6.RELEASE。
次期バージョンの3.0.7-SNAPSHOTでは getApplicationContext が実装されているので、とりあえずリリース待ち。
getApplicationContext が実装されたことで、Viewが返せるかは不明。

GitHub - ThymeleafReactiveViewResolver.java

続きを読む

【Java】整数リテラルの表記メモ

JavaSE8 Silverの勉強を始めたのですが、仕様を理解していない箇所がちらほら出てきてるのでメモ。

今回は整数リテラルの表記について。

続きを読む