Tagbangers Blog

Java

Domain Event with Spring

Domain Event とは? 売上というドメインがある場合 、売上ドメインでは様々な出来事がおきます。 「売上ができた」「売上が変更された」「売上が削除された」 ここで、「売上ができた」という出来事は副作用があるかも知れません。 伝票ができるかもしれませんし、在庫が変動することもあるでしょう。 これらの副作用を売上ドメインだけで完結しようとすると、 伝票ドメインや在庫ドメインとの深い関係を持っている状態になります。 我々の世界ではこれを密結合と言ったりします。 疎結合と密結合であれば、疎結合がいいと言うのはなんとなくわかりますね。 マイクロサービスがもてはやされているのもこれが一つのキーワ...

Spring I/O 2019 Slides

Keynote Juergen Hoeller / Ben Hale / Violeta Georgieva and Sébastien Deleuze https://twitter.com/sdeleuze/status/1129017544013221888 Moving from Imperative to Reactive Paul Harris The State of Java Relational Persistence Maciej Walkowiak https://speakerdeck.com/maciejwalkowiak/the-state-of-java-rela...

HATEOAS をおさらい

HATEOAS とは? Hypermedia As The Engine Of Application State (HATEOAS) is a component of the REST application architecture that distinguishes it from other network application architectures. With HATEOAS, a client interacts with a network application whose application servers provide information dynami...

Spring Data JDBC 101

Spring Data JDBC タグバンガーズでは Spring Data JPA をデータベースアクセスに使用することが多いのですが、 今回は「シンプルに!」がコンセプトの Spring Data JDBC に触れて見たいと思います。 リリースされてから結構経ってしまいましたが早速いってみよう。 シンプル JPA は便利で高機能です。それが故に複雑になりがちです。 複雑さを生むのは以下のような要素があるからだと言われます。 遅延ロード エンティティのプロキシ セッション / 1st レベルキャッシュ エンティティの監視 こんなに機能必要ない。そんなときは Spring Data JDBC ...

Spring Java Format を使って Springスタイルでコードフォーマット+チェックする

Springのコードを書き、PRを出すタイミングで不要なスペースや改行してないなどといったコードフォーマットのチェックを行いたい時に、 Spring Java formatを利用する機会があったので紹介します。 Spring Java Formatとは Spring本家から出ている、一貫したSpringスタイルを提供するために任意のJavaプロジェクトに適用できるプラグイン 詳細はGithubにて できること: 折り返しと空白の規約を適用するソースフォーマッタ コードベース全体の一貫性を強化する(チェックスタイル) シンプルで、準備もpomに書いて実行するだけなのでとても簡単ですが、 自社のス...

Spring Cloud Contract の Pact 対応

先日行われた Spring Fest 2018 で「Spring Data REST と Spring Cloud Contract」というタイトルで登壇させていただきました。 デモがあればわかりやすかった、というご意見をいただきましたので、ちょっとしたサンプルコードを公開しました。 話のもとになっているスライドはこちらです。 https://www.slideshare.net/OgawaTakeshi/spring-datarestandspringcloudcontract 今回のサンプルコードは Angular で作られたフロントエンドアプリが Consumer として Pact を生...

The temporary upload location [/tmp/tomcat.***] is not valid

Spring Boot のアプリでファイルアップロードの機能が突然以下のようなエラーで機能しなくなるようなことがありました。 java.io.IOException: The temporary upload location [/tmp/tomcat.4973725229945795147.5000/work/Tomcat/localhost/ROOT] is not valid 原因は以下。 https://github.com/spring-projects/spring-boot/issues/5009 https://github.com/spring-projects/spring...

JUnitテストについて

暖かくなったり寒くなったり毎日着る服に困りますね。こんばんは、内藤です。 今回はユニットテストについて書いていきたいと思います。 テストと言われたら、テスト仕様項目書を書いてそのテストを黙々とこなしていく方法しか知らなかった為、 テスト用のコードを書いてビルド時に自動的に実行してくれるなんて便利すぎるだろと感動しました。 JUnitテストって? Javaプログラム単体テスト専用フレームワークです。 ユニットテストを描くことによって正しく動作しているか確認できます。 また、一度描くと何度も手軽にテストを行うことができますし、 同じようなテストを作成する場合に使い回すことも可能です。 今回、私はC...

Javaの再勉強

初めまして、2月1日からタグバンガーズで勤務することになりました内藤です。 以前の会社ではactionScriptとJavaを主に使ってました。 1〜23日の間、Devチームにて研修をさせて頂いたのですが、Javaを使っていた私は謎の余裕に満ちてました。 いざ研修が始まってプログラムを組むってなった時、javaの知識がパッと頭の引き出しから出せない事に気付きました。 javaだけでプログラムが書けない、文字表示すんのどうすんだっけ、あぁSystem.out.printか、全然覚えてないわ ってな感じだったのでこれは勉強しなきゃマズイと思いこそこそjavaの再勉強と再発見をしていきました。 その...

Hibernate Search + Elasticsearch を試してみる (Amazon Elasticsearch Service 版)

前回の記事では Hibernate Search を使って Docker コンテナ上の Elasticsearch と連携してみました。 今回は AWS のフルマネージドな Amazon Elasticsearch Service と連携させてみましょう。 記事中のサンプルコードはここにあります。 環境: Mac OS X Hibernate Search 5.8.0.CR1 Amazon Elasticsearch Service (Elasticsearch version 5.5) 1. Elasticsearch Service を作成する AWS マネージメントコンソールの Elas...