たんトンコンテナ


インフラストラクチャの金ヨンハン氏の「スプリングコア原理−基本編」の授業内容をまとめた.

Webアプリケーションとモノトーン


Webアプリケーションは、通常、複数のお客様が同時に要求します.
スプリングのない純粋なDIコンテナでは、要求されるたびに新しいオブジェクトが作成されます.
=>メモリの浪費が深刻です.
=>ソリューション:オブジェクトを1つだけ作成し、共有=モノトーンモードにする

モノトーンモード


クラスインスタンスが1つしか作成されていない設計モードを確認します.
複数のオブジェクトインスタンスの作成を防止します.=>privateジェネレータを使用して、外部で新しいキーワードを任意に使用することを阻止します.
public class SingletonService {

    private static final SingletonService instance = new SingletonService();

    public static SingletonService getInstance() {
        return instance;
    }

    private SingletonService() {

    }

    public void logic() {
        System.out.println("싱글톤 객체 로직 호출");
    }
}
  • 静的領域にオブジェクトインスタンスを事前に作成してアップロードします.
  • インスタンスが必要な場合は、getInstance()メソッドでのみクエリーが実行され、常に同じインスタンスが返されます.
  • は1つのインスタンスしか必要としないため、ジェネレータが新しいキーワードで外部でインスタンスを作成することをプライベートで阻止する.
  • モノトーンモードの問題

  • モノトーンモードを実現するコード自体は多くの必要がある.
  • 依存関係のため、クライアントは特定のクラスに依存します->DIP違反
  • クライアントは、OCPの原則に違反する特定のクラスに依存する可能性が高い.
  • をテストするのは難しいです.
  • の内部プロパティを変更または初期化するのは難しいです.
  • プライベートジェネレータを使用するため、サブクラスの作成は困難です.
  • 結論は柔軟性が悪い.=>逆モードとも呼ばれます.
  • たんトンコンテナ


    スプリングコンテナは、モノトーンモードの問題を解決しながら、オブジェクトインスタンスをモノトーンに管理します.Spring Binはモノトーン管理のBinです
    スプリングコンテナは、モノトーンモードを適用することなく、オブジェクトインスタンスをモノトーンモードで管理します.
    スプリング容器=1トン容器.
    モノトーンレジストリモノトーンレジストリ:モノトーンオブジェクトの作成と管理モノトーンオブジェクトノサクセイとカンリ
    スプリングは管理可能なので、モノトーンパターンに乱雑なコードを追加する必要はありません.
  • トンコンテナを使用すると、クライアントが要求するたびにオブジェクトを作成するのではなく、作成したオブジェクトを共有することで効率的に再利用できます.
  • モノトーンの注意点


    モノトーン方式は、複数のクライアントが同じオブジェクトインスタンスを共有するため、モノトーンオブジェクトをステータスとして設計することはできません.
    無状態に設計!
  • 特定のクライアントに依存フィールドはありません.
  • 特定のクライアントは、値を変更できるフィールドを持ってはいけません.
  • は、できるだけ読み取り専用にしてください.
  • フィールドではなく、Javaで共有されていない領域変数、パラメータ、ThreadLocalなどを使用する必要があります.
  • スプリングシートのフィールドに共有値を設定すると、大きな障害が発生する可能性があります.

    @Configuration

    class com.hello.springbasic.AppConfig$$EnhancerBySpringCGLIB$$e4182d78
    @ConfigurationAppConfig(スプリング設定情報)を貼り付け、スプリングはCGIBというバイトコード操作ライブラリを使用してAppConfigクラスを継承する任意の他のクラスを作成し、他のクラスをスプリングビンとして登録します.AppConfig@CGLIBにおいて、@Beanが貼られた各方法は、既にスプリング空孔が存在する場合、存在する空孔を返し、スプリング空孔が存在しない場合、スプリング空孔として生成され、登録され、返されるコードを動的に生成する.
    整理する
  • 2@Beanだけでスプリングシートとして登録できますが、モノトーンであることは保証されません.
  • スプリング構成情報では、@Configuratio nが常に使用される.