21日間でSpring-Sepringのデザイン初心とデザイン理念をクリアしました(day 3)


本当にSpringの核心に足を踏み入れる前に、Springのデザイン初心とデザイン理念を知る必要があります.これは設計者の角度から問題を考えさせて、巨人の肩に立ってこれらの理念を勉強して使ってもいいです.これらのフレームを使うことだけではなく、デザインの理念を勉強してもいいです.
Springのデザイン初心者
Springの設計の初志は実は4つの字です.プログラミングを簡略化します.しかし、この4文字を本当にするために、Springはたくさんのことをしました.例えば:
  • 約束が配置より大きい
  • POJOベースの軽量級と最小侵入性プログラミング(BOP、ビーン向けプログラミング).
  • 注入(DI)依存とインターフェースプログラミングによる松結合を実現します.
  • カット面(AOP)と慣性による声明式プログラミング.
  • カット面(AOP)とテンプレートでサンプルコードを減らす.
  • Bean設計理念(BOP)
    ビーンはSpringでは本当の主役です.BeanはSpringに対してObjectがOOP(対象に向かってプログラミングする)のようです.Spring IoC容器(Bean容器ともいいます.)オブジェクトとオブジェクトの依存関係は、ファイルまたは注釈を配置することによって管理されます.
    制御反転(IoC)の基本概念は、オブジェクトを作成しないで作成する方法を説明することです.コードではオブジェクトとサービスと直接接続しないが、どのコンポーネントがどのサービスを必要とするかを構成ファイルで説明する.オブジェクトの作成は容器が担当しています.
    注意IoC(制御反転)とDI(依存注入)の違い:
    IoCは実現の目標であり、DIはIoCを実現する手段である.しかし、IoCはDI(依存注入)だけではなく、依存ルックアップによっても実現できる.しかしSpringはDIによりIoC制御反転を実現した.
    BenFactoryデザイン理念
    Springの最高級抽象はBenFactoryインターフェースであり、名前を見て知ることができます.工場モデルの実現によって、名称の作成とインデックスオブジェクトの作成が可能です.BenFactoryは対象との関係を管理しています.
    BenFactory最下層は2つのオブジェクトモデルをサポートしています.
  • 単一例モデル(デフォルト):特定の名前を持つグローバル共有インスタンスオブジェクトが提供されており、照会時に検索できます.
  • プロトタイプ(scope=prototypeで修正可能):検索ごとに個別のインスタンスオブジェクトを作成することを確保する.各ユーザーが独自のオブジェクトを必要とする場合、モデルを採用する.
  • AOPプログラミングの理念
    AOP、つまり面に向かってプログラミングして、それはプログラマが横に切って点あるいは典型的な職責の境界線の行為に関心を持つことを可能にします.
  • AOPのコア構造は、複数の種類に影響を与える行為を再利用可能なモジュールにパッケージ化した断面である.
  • AOPとIoCは補完的な技術であり、いずれもモジュール化方式を用いて企業のアプリケーション開発における複雑な問題を解決しています.
  • AOPの機能はすでにSpring事務、日誌などのシーンに引き継がれています.例えば@Transactional注釈によって、事務の管理が簡単に実現できる.
  • AOPプログラミングの常用シーンには、権限認証、自動キャッシュ(Cache)、異常処理(Exception Handler)、デバッグ、ログ、事務などがあります.
  • Springアーキテクチャ設計
    Springは複数のモジュールで構成されており、各モジュールは単独で存在しても良いし、1つ以上のモジュールを組み合わせて使用して、業務ロジックを共同で完成させることもできます.実際の開発では、core、aop、web、jdbcなど、Springの複数のモジュールを同時に使用することが多い.
    コアコンテナ
    コアコンテナモジュールはspring-beansspring-corespring-contextspring-expression4つのモジュールから構成されています.
  • spring-beansとspring-coreモジュールは、springフレームのコアモジュールであり、制御反転(IoC)と依存注入(DI)の2つの部分が含まれています.
  • BenFactoryは、制御反転により、アプリケーションの構成と依存性の仕様を実際のアプリケーションコードと分離しました.注意:BenFactoryが実用化された後、自動的にBeanをリアルにすることはなく、Beanが使用されている場合にのみ、BenFactoryがこのBeanを実例化し、依存関係の組み立てを行うことができます.
  • spring-contextモジュール:コアモジュール上に構築され、spring-beansとspring-coreに依存しています.ビーンファクトリーを拡張し、ビーンライフサイクル制御、フレームイベントシステム、リソースローディングの透明化などの機能を追加しました.
  • Application Comptextはこのモジュールのコアインターフェースであり、その超種類はBeanFactoryである.
  • 注意:Application Contectを実装すると、すべてのシングルインスタンスのBean(すなわち、前述のシングルモデルのBeanオブジェクト)を自動的に実例化し、依存関係の組み立てを行い、待機状態にします.
  • spring-expressionモジュール:統一式言語(EL)の拡張モジュールであり、運転中のオブジェクトを照会、管理することができ、オブジェクトメソッドの呼び出しや操作配列、集合などを容易にすることができます.
  • AOPモジュール
    AOPモジュールはspring-aop、spring-aspects、spring-innstrumentの3つのモジュールから構成されています.
  • spring-aopはSpringのもう一つのコアモジュールで、AOPの主な実現モジュールです.JVMの動的代理技術をベースに、シリーズのAOP横断実現を設計しました.
  • spring-aspectsモジュールはAsppectJフレームから継承されており、主にスプリングのためにより多くのAOP実現方法を提供しています.
  • spring-innstrumentモジュール:主な役割はJVMの起動時にプロキシクラスを生成し、プログラマはプロキシクラスを通じて実行時にクラスのバイトコードを修正して、クラスの機能を変えて、AOPを実現する.
  • データアクセスモジュール
    データアクセスと統合はspring-jdbc,spring-tx,spring-orm,spring-oxm,spring-jmsの5大モジュールからなる.
  • スプリングJdbcモジュール:Springから提供されるJDBCの抽象フレームの主な実現モジュールで、Spring JDBCの操作を簡略化するために使用されます.主にJDBCテンプレート方式、関係データベースのオブジェクト化方式、SimpleJdbc方式、事務管理などを提供して、JDBCプログラミングを簡略化します.
  • スプリング-txモジュール:Spring JDBC事務制御実現モジュールです.そのAOP構成により、任意の層に柔軟に配置することができます.
  • 事務は業務のロジックを基礎として、一つの完全な業務は業務層の一つの方法に対応しなければならない.業務操作が失敗すれば、全体の業務がロールバックします.だから、事務コントロールは業務層に置くべきです.恒久層の設計は重要な原則に従う必要があります.動作の原子性、すなわち恒久層内の各方法は不可分であるべきです.
  • spring-ormモジュール:ORMフレームサポートモジュールは、主にJPAなどのORMフレームワークを継承し、資源管理、データアクセス先(DAO)の実現と事務戦略に用いられます.
  • spring-oxmモジュール:主にOXMをサポートする抽象層を提供します.OXMはO/M-mapperで、JavaオブジェクトをXMLデータにマッピングしたり、XMLデータをJavaオブジェクトにマッピングしたりします.
  • spring-jmsモジュール:メッセージの送受信が可能です.
  • Webモジュール
    Webコンポーネントはスプリング-web、スプリング-webmvc、スプリング-websocketとスプリング-webfluxの4つのモジュールで構成されています.
  • スプリングwebモジュール:Springに基礎的なwebサポートを提供し、主にコアコンテナに構築され、ServletまたはListenerによりIoC容器を初期化し、Web関連の他のサポートも含まれています.
  • スプリング-webmvcモジュール:Web-Servletモジュールで、Spring MVCのWebアプリケーションを実現しました.
  • スプリングウェルバックモジュール:Webフロントエンドと全二重通信を行うwebsocketプロトコル.
  • spring-webfluxモジュール:非閉塞関数式Reactiveの新たなWebフレームを使用して、非同期的、非閉塞的、イベント駆動的なサービスを構築することができます.そして拡張性がとても良いです.
  • 通信報文モジュール:
    スプリングス-messagingモジュールだけがあります.彼はSpring 4に新しく導入されたモジュールです.主な役割はSpringフレームのためにいくつかの基礎を集めた新聞文転送応用です.
    統合テスト
    すなわち、spring-testモジュールは、主にテストのサポートを提供しており、アプリケーションサーバにプログラムをリリースする必要がない場合や他の施設に接続する必要がない場合に、いくつかの統合テストまたは他のテストを行うことができるようにしています.
    統合互換性
    すなわちspring-frame ebomモジュールであり、主にSpringの異なるモジュール依存バージョンの問題を解決します.Mavenの親POMファイルに相当し、依存バージョンを管理しています.