
archtecture
Spring 初学者が最初に知るべき責務とレイヤーと DDD (2020年 改訂)
DDDが身近になり、適用ハードルもずいぶん低くなってきたように感じてきていたため、以前のポストからところどころ書き直しました。レイヤードアーキテクチャSpringでは各コンポーネントの責務に応じたステレオタイプアノテーションが用意されており、これらがどう連携するかについては、レイヤードアーキテクチャをイメージすると理解しやすいです。Springでの各コンポーネントは、以下のように連携します。また、いくつかのアノテーションは、ドメイン駆動開発にそのヒントを得て用意されているため、実際のクラスやパッケージの配置については、もう少しDDDに気を使ったものとするのが良いでしょう。具体的には以前のポストでも使用した、以下の図を参考にしてみてください。トランザクションスクリプトとDDD以下、各コンポーネントについて、簡単に説明してみます。ViewSpringにおけるビューは、一般的なHTMLページを構2020.09.02
トランザクションスクリプトとDDD
エヴァンスが2003年に書籍Domain-DrivenDesignで紹介してから早17年。やっと時代が追いつき、近年ではこれまでにないほどDDDが注目を集めている。注目が高まるとともに、DDDを取り扱う良質な書籍も増え、私自身も複数のDDDの実践を経て、以前よりも理解は進んできたように思う。そこで、私の現時点でのDDDに対する解釈を、一度ここに書き起こし、残してみようと思う。(これはあくまで現時点での解釈であり、解釈のアップデートがあれば書き換えるかもしれない。)なお本稿では、ドメインエキスパートや、ユビキタス言語といった、DDDのプロジェクトへの適用側面には触れず、あくまでプログラミングする際にどのように理解、適用していけばよいかを中心に見ていく。2011年9月、SpringFramework3.0.6がリリースされて間もない頃、SpringのAPIドキュメント内にDDDの文字を見つける2020.09.01
ビジネスサービス・ファサード
造語と思われるこの耳馴染みのない単語は、Springのドキュメント内に登場する。https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/Service.html(DeepLによる機械翻訳)注釈されたクラスが「サービス」であることを示します。これは、もともとDomain-DrivenDesign(Evans,2003)によって「モデル内で独立したインターフェースとして提供され、カプセル化された状態を持たない操作」として定義されていました。また、クラスが「ビジネスサービス・ファサード」(CoreJ2EEパターンの意味で)であることを示す場合もあります。このアノテーションは汎用的なステレオタイプであり、個々のチームがセマンティクスを絞り込んで適切に使用することができる。このアノテー2020.08.28


