たんトンコンテナ
インフラストラクチャの金ヨンハン氏の「スプリングコア原理−基本編」の授業内容をまとめた.
Webアプリケーションは、通常、複数のお客様が同時に要求します.
スプリングのない純粋なDIコンテナでは、要求されるたびに新しいオブジェクトが作成されます.
=>メモリの浪費が深刻です.
=>ソリューション:オブジェクトを1つだけ作成し、共有=モノトーンモードにする
クラスインスタンスが1つしか作成されていない設計モードを確認します.
複数のオブジェクトインスタンスの作成を防止します.=>privateジェネレータを使用して、外部で新しいキーワードを任意に使用することを阻止します.静的領域にオブジェクトインスタンスを事前に作成してアップロードします. インスタンスが必要な場合は、 は1つのインスタンスしか必要としないため、ジェネレータが新しいキーワードで外部でインスタンスを作成することをプライベートで阻止する. モノトーンモードを実現するコード自体は多くの必要がある. 依存関係のため、クライアントは特定のクラスに依存します->DIP違反 クライアントは、OCPの原則に違反する特定のクラスに依存する可能性が高い. をテストするのは難しいです. の内部プロパティを変更または初期化するのは難しいです. プライベートジェネレータを使用するため、サブクラスの作成は困難です. 結論は柔軟性が悪い.=>逆モードとも呼ばれます.
スプリングコンテナは、モノトーンモードの問題を解決しながら、オブジェクトインスタンスをモノトーンに管理します.Spring Binはモノトーン管理のBinです
スプリングコンテナは、モノトーンモードを適用することなく、オブジェクトインスタンスをモノトーンモードで管理します.
スプリング容器=1トン容器.
モノトーンレジストリモノトーンレジストリ:モノトーンオブジェクトの作成と管理モノトーンオブジェクトノサクセイとカンリ
スプリングは管理可能なので、モノトーンパターンに乱雑なコードを追加する必要はありません.
トンコンテナを使用すると、クライアントが要求するたびにオブジェクトを作成するのではなく、作成したオブジェクトを共有することで効率的に再利用できます.
モノトーン方式は、複数のクライアントが同じオブジェクトインスタンスを共有するため、モノトーンオブジェクトをステータスとして設計することはできません.
無状態に設計!特定のクライアントに依存フィールドはありません. 特定のクライアントは、値を変更できるフィールドを持ってはいけません. は、できるだけ読み取り専用にしてください. フィールドではなく、Javaで共有されていない領域変数、パラメータ、ThreadLocalなどを使用する必要があります. スプリングシートのフィールドに共有値を設定すると、大きな障害が発生する可能性があります.
整理する2 スプリング構成情報では、
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()
メソッドでのみクエリーが実行され、常に同じインスタンスが返されます.モノトーンモードの問題
たんトンコンテナ
スプリングコンテナは、モノトーンモードの問題を解決しながら、オブジェクトインスタンスをモノトーンに管理します.Spring Binはモノトーン管理のBinです
スプリングコンテナは、モノトーンモードを適用することなく、オブジェクトインスタンスをモノトーンモードで管理します.
スプリング容器=1トン容器.
モノトーンレジストリモノトーンレジストリ:モノトーンオブジェクトの作成と管理モノトーンオブジェクトノサクセイとカンリ
スプリングは管理可能なので、モノトーンパターンに乱雑なコードを追加する必要はありません.
モノトーンの注意点
モノトーン方式は、複数のクライアントが同じオブジェクトインスタンスを共有するため、モノトーンオブジェクトをステータスとして設計することはできません.
無状態に設計!
@Configuration
class com.hello.springbasic.AppConfig$$EnhancerBySpringCGLIB$$e4182d78
@Configuration
のAppConfig
(スプリング設定情報)を貼り付け、スプリングはCGIBというバイトコード操作ライブラリを使用してAppConfig
クラスを継承する任意の他のクラスを作成し、他のクラスをスプリングビンとして登録します.AppConfig@CGLIB
において、@Bean
が貼られた各方法は、既にスプリング空孔が存在する場合、存在する空孔を返し、スプリング空孔が存在しない場合、スプリング空孔として生成され、登録され、返されるコードを動的に生成する.整理する
@Bean
だけでスプリングシートとして登録できますが、モノトーンであることは保証されません.@Configuratio
nが常に使用される.Reference
この問題について(たんトンコンテナ), 我々は、より多くの情報をここで見つけました https://velog.io/@nrudev/싱글톤-컨테이너テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol