[開発] 暫く見ぬ間にSpringがえらい成長してた

※ すべて以下からの抜粋
http://terasolunaorg.github.io/guideline/5.2.0.RELEASE/ja/index.html

RequestLifecycle.png
http://terasolunaorg.github.io/guideline/5.2.0.RELEASE/ja/_images/RequestLifecycle.png
ApplicationLayer.png
http://terasolunaorg.github.io/guideline/5.2.0.RELEASE/ja/_images/ApplicationLayer.png


アプリケーション層
アプリケーション層は、クライアントとのデータの入出力を制御する層
  Controller = @Controllerアノテーションが付与されているPOJO
    画面遷移の制御
    ドメイン層のServiceの呼び出し
  View
    クライアントへの出力。HTML/PDF/Excel/JSONなど
    ※JSONやXML形式の出力を行う場合は、HttpMessageConverterクラスがViewの役割を担う。
  Form (form backing bean)
    HTMLのフォームを表現
    入力チェックルールの宣言 = Bean Validationのアノテーションを付与
    ※ドメイン層がアプリケーション層に依存しないよう
      → Beanは入れ替える。
      → 入れ替え作業はCOntrollerよりHelperなりDozerの利用が推奨される。(Controllerの可読性保持の為)
    ※JSONやXML形式の入力を受ける場合は、
      → ResourceクラスがFormの役割を担う。
      → 変換は、HttpMessageConverterクラスが担う。
  Helper
    Controllerを補助する
    必要に応じて、POJOクラスとして作成する

ドメイン層
ドメイン層は、アプリケーションのコアとなる層であり、ビジネスルールを実行(業務処理を提供)する。
  Domain Object
    ビジネスを行う上で必要な資源や、ビジネスを行っていく過程で発生するものを表現するモデル
  Repository
    Domain Objectのコレクションのような位置づけ
    Domain Objectの問い合わせや、作成、更新、削除のようなCRUD処理を担う
    この層では、インタフェースのみ定義、実体はインフラストラクチャ層のRepositoryImplで実装する

インフラストラクチャ層
インフラストラクチャ層は、ドメイン層(Repositoryインタフェース)の実装を提供する層
データストア(RDBMSや、NoSQLなどのデータを格納する場所)への永続化や、メッセージの送信などを担う。
  RepositoryImpl
    Repositoryインタフェースの実装として、Domain Objectのライフサイクル管理を行う処理を提供する。
  O/R Mapper
    データベースとEntityの相互マッピングを担う。
    MyBatis (MapperインタフェースやSqlSession) / JPA (EntityManager) / Spring JDBC (JdbcTemplate) が、本機能を提供する。
  Integration System Connector
    データベース以外のデータストア(メッセージングシステム、Key-Value-Store、Webサービス、既存システム、外部システムなど)との連携を担う。

LayerDependencies.png
http://terasolunaorg.github.io/guideline/5.2.0.RELEASE/ja/_images/LayerDependencies.png
LayerDependencyInjection.png
http://terasolunaorg.github.io/guideline/5.2.0.RELEASE/ja/_images/LayerDependencyInjection.png
LayeringPattern1.png
http://terasolunaorg.github.io/guideline/5.2.0.RELEASE/ja/_images/LayeringPattern1.png

プロジェクト構成
[projectName]-domain  ドメイン層に関するクラス・設定ファイルを格納するプロジェクト
[projectName]-web  アプリケーション層に関するクラス・設定ファイルを格納するプロジェクト
[projectName]-env  環境に依存するファイル等を格納するプロジェクト
[projectName]-infra  インフラストラクチャ層のクラスを格納するプロジェクト。domainプロジェクトに格納もOK

Bean定義構成



メッセージを同期送信する処理の流れ
JMSSendOverview.png
http://terasolunaorg.github.io/guideline/5.2.0.RELEASE/ja/_images/JMSSendOverview.png

JMSメッセージを同期送信する処理の流れ
JMSSyncOverview.png
http://terasolunaorg.github.io/guideline/5.2.0.RELEASE/ja/_images/JMSSyncOverview.png

JMSメッセージを非同期受信する処理の流れ
JMSASyncOverview.png
http://terasolunaorg.github.io/guideline/5.2.0.RELEASE/ja/_images/JMSASyncOverview.png



tag : Spring

2016-12-09 23:28 : 開発 : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud