Spring]Spring概念学習履歴


インフラストラクチャ「新しいプログラマーのJava Springフレームワークチュートリアル」のトレーニングとまとめ.

1.概要


📌 スプリングフレーム?


SpringフレームワークはJavaプラットフォーム向けのオープンソースアプリケーションフレームワークです.
ダイナミックWebサイトの開発に多様なサービスを提供します.
DI、AOP、MVC、JDBCなどを提供します.
これは,オブジェクト向け言語の利点を最大限に利用するのに役立つフレームワークといえる.

📌 スプリングフレームモジュール

  • spring-core:スプリングコアの依存注入とIoC
  • を提供する
  • spring-aop:AOP実装機能を提供
  • spring-jdbc:データベースの使いやすさを提供
  • spring-tx:トランザクション関連機能
  • spring-webmvc:mvc実装機能
  • 📌 ばね容器


    スプリングにオブジェクトのコンテナを作成してアセンブリし、コンテナで作成したオブジェクトを空と呼びます.

    1)オブジェクトの作成と属性データの作成
    2)スプリングコンテナでのオブジェクトの作成とアセンブリ(空)
    3)アプリケーション実施

    📌 IoC(Inversion of Control)


    関連項目:IoCとDI
    制御の逆転.メソッドまたはオブジェクトの呼び出しは、開発者が決定するのではなく、外部が決定します.
    通常のmainメソッドから、開発者が定義した順序でオブジェクトを作成および実行します.
    しかし、サーブレットについて考えてみましょう.開発してサーバに配備できますが、導入後、開発者は直接制御できません.逆に、コントロールを持つコンテナは、適切な時間にBritクラスのオブジェクトを作成し、メソッドを呼び出します.
    これを制御の逆転と呼ぶ.
    通常、フレームワークの使用方法は、制御の逆転と見なすことができる.
  • 開発者開発=>組立
  • コンポジットコードに対する最終呼び出しは、フレーム内で決定される.
  • 2.開発環境


    📌 JVM

  • MacOS上でのJVM開発環境の構築
  • JVM : .Javaソースコードをコンパイルするバイトコード(.class)を読み取り、検証、実行します.同じ稼働環境を確保
  • JRE:Javaを実行するためのプログラム.JVM+Javaライブラリ、およびその他のファイル.
  • JDK:Java開発キットの略で、Javaコンパイラ、デバッガ、JREなどを含む開発ツールです.Javaのみを実行する場合は、JRE(Java Runtime Environment)のみが必要です.
  • 📌 Mavenを使用したプロジェクトの設定


    関連項目:Mavenとは?
  • バージョン?
    Javaソース、リソース(.xml、.jpg、.properties)をJVMまたはTomcatなどのWASで認識できる構造にパッケージ化するプロセスと結果
  • 構築ツール?
    プロジェクトの作成、テストの構築、およびプロジェクトの導入に使用される専用プログラム.
    Java陣営ではAnt>Maven->Gradleを使用しています.
  • Maven
    Java用のプロジェクト管理ツールで、ProJetのライフサイクル全体を管理します.
    必要なライブラリをpom.xmlで定義すると、そのライブラリはネットワークを介して自動的にダウンロードされます.
  • 📌 Benの範囲


    モノトーン


    ソフトウェア設計モードでは、一輪モードに従うクラスはオブジェクトであり、ジェネレータを複数回呼び出しても実際に生成されたオブジェクトはオブジェクトであり、最初に作成された後に呼び出されたジェネレータは最初に作成されたオブジェクトを返します.
    私たちが作成したDIコンテナを要求するたびに、新しいオブジェクトが生成されます.非常に多くのトラフィック・サイトでオブジェクトを作成し続けると、メモリが大幅に浪費されます.このため、スプリングはすべての空席に対して単色調を保つ.
    スプリングコンテナで作成された空のオブジェクトの場合、デフォルトでは同じタイプのオブジェクトは1つだけ作成され、getBean()メソッドが呼び出されると同じオブジェクトが返されます.

    プロトタイプ


    単一の色調範囲とは逆の概念.
    設定ファイル(applicationContext.xml)で空のオブジェクトを定義する場合は、scopeプロパティを指定することで実現できます.

    3.ばねのDI


    📌 DI


    関連項目:IoCとDI
    依存注入の略.依存性注入
    コントロールが逆方向になると、スプリングが内部オブジェクト間の関係を管理するときに使用する方法
    依存オブジェクトを直接作成または制御するわけではありません.
    外部から特定のオブジェクトに必要なオブジェクトを特定し、それを関連付けます.
    すなわち,抽象的なクラス機能インタフェースを用いることができる.
    残りの部分は、スプリングがオブジェクトに注入されるためです.
    モジュール間の結合度を低減し、柔軟性を向上させることができます.

    ジェネレータから注入


    例)バッテリー一体式:バッテリーが切れたら、おもちゃを買い直す必要があります.
    public class ElectronicCarToy {
    	
        private Battery battery;
        
        public EletronicCarToy() {
        	battery = new NormalBattery();
        }
    }

    Setterから注入


    例)電池の切断:電池が切れたら、電池を交換するだけでよい
    public class ElectronicCarToy {
    	
        private Battery battery;
        	
        public EletronicCarToy() {}
        
        public void setBatter(Batter battery) {
        	this.battery = new NormalBattery();
        }
    }

    ジェネレータ+Setterから注入


    例)電池の切断:電池が切れたら、電池を交換するだけでよい
    public class ElectronicCarToy {
    	
        private Battery battery;
        	
        public EletronicCarToy(Battery battery) {
    	this.battery = new NormalBattery();
        }
        
        public void setBatter(Batter battery) {
        	this.battery = new NormalBattery();
        }
    }

    📌 依存オブジェクトの自動注入


    スプリング設定ファイルから依存オブジェクトを注入すると、スプリングコンテナは、<contructor-org>または<property>タグを使用して依存オブジェクトを指定することなく、必要な依存オブジェクトを自動的に検索し、必要なオブジェクトに注入することができます.
  • @Autowired:自動注入タイプが一致するオブジェクト.Requiredプロパティを使用すると、対応する空(依存オブジェクト)がなくてもExceptionは処理されません.
  • @Inject:自動注入タイプが一致するオブジェクト.必要な属性はX
  • をサポートする
  • @Resource:同名オブジェクトの自動注入
  • @Qualifier:使用する依存オブジェクトを選択できます.
  • 4. MVC


    アーキテクチャ・モードの1つです.サブシステムをモデル、ビュー、コントローラのモードに構造化
    コントローラが要求を受信すると、ビューに情報が出力され、コア機能とデータを格納するモデルが使用されます.