スプリングコア原理2章
前章では,スプリングフレームを用いてOCPとDIPを満たす.しかし、以前作成したAppConfigもOCPとDIPを満たすコンテナ役を忠実に演じていた.2章では,スプリングの使用の利点と管理方法について述べた.
既存のAppConfigクラスに@Configurationと@Beanを追加するだけでSpringBinに登録して使用できます.スプリングコンテナから必要なオブジェクト、ApplicationContextを見つけることができます.getBean()メソッドで見つけることができます.
では、このように貼って使うと、以前作ったコードと何のメリットと違いがありますか?疑問が生じる.
もちろん、スプリングは、configurationを手動で登録する方式と比較して、主に素子走査による自動依存注入方式を用いる.
スプリングを使用する利点については、将来説明する.
すべての空の出力
1.ac.getBenDefinitionNames():スプリングに登録されているすべての空をクエリーします.
2.ac.getBean():空のオブジェクトをクエリーします.
アプリケーションの空の出力
スプリング内部に使用するスペースはgetRole()で区切ることができます.
空の名前.ROLE APPLICATIONは、通常、ユーザ定義のVINである.
クエリー・タイプには同じタイプがあります.
クエリー・タイプが同じ場合は、エラーが発生します.
ac.getBeansOfType()は、このタイプのすべての空をクエリーできます.
BeanFactoryはSpringコンテナのトップレベルのインタフェースです.
スプリングシートの管理と照会を担当します.getBean()などの方法を提供します.
ApplicationContextは、すべてのBenFactory機能を継承し、提供します.ApplicationContextは、BenFactory以外のさまざまなインタフェースを継承し、さまざまな機能を提供します.
スプリング容器は、様々な形態の設定情報を受信できるように設計されている.
ex) java, xml, groovy,...
スプリングはBeanDefinitionの情報のみを利用しており、JavaロビンをデザインしてもXMLをデザインしても仕様通りにデザインすればいいので、BeanDefinitionを見ればいいのです.
スプリングを使用する最大の原因は、いつも1トンのコンテナを維持していることです.
以前作成したAppConfigを純Javaとして実行しましょう
memberServiceの作成new memberRepositoryでオブジェクトを作成し、orderServiceを作成new memberRepositoryでオブジェクトを作成します.
Webアプリケーションとして扱うと、ユーザーの要求に応じて新しいオブジェクトが作成されます.
したがって、1回だけオブジェクトを作成し、単一のトーンモードを使用して共有するように設計する必要があります.
シングルトーンモードは、クラスのインスタンスが1つしか生成されないことを保証する設計モードです.したがって、privateによる複数のオブジェクトの作成を防止する必要があります.
このようなモノトーンモードの問題は、クライアントがまず特定のクラスに依存することである.また、様々なモノトーンモードの問題もあります.
モノクロコンテナは、モノトーンモードを適用する必要がなく、オブジェクトインスタンスをモノトーン管理できます.スプリングコンテナは、これらの単色調コンテナを使用することによって、単一トーンモードの乱雑なコードを記述することなく、DIP、OCP、privateなどの問題を解決することができる.
モノクロコンテナは、最終的にはオブジェクトを作成し、オブジェクトを管理する方法であり、そのオブジェクトは保持状態として作成できません.
クライアントが依存フィールドまたはクライアントによって値を変更する方法では、その後どこでどのような内容が変更されたのか、できるだけ読み取り専用の方法を使用する必要があります.
スプリングの適用
既存のAppConfigクラスに@Configurationと@Beanを追加するだけでSpringBinに登録して使用できます.スプリングコンテナから必要なオブジェクト、ApplicationContextを見つけることができます.getBean()メソッドで見つけることができます.
では、このように貼って使うと、以前作ったコードと何のメリットと違いがありますか?疑問が生じる.
もちろん、スプリングは、configurationを手動で登録する方式と比較して、主に素子走査による自動依存注入方式を用いる.
スプリングを使用する利点については、将来説明する.
スプリングコンテナを作成するには
ApplicationContext ac =new AnnotationConfigApplicationContext(AppConfig.class);
ApplicationContextをSpringコンテナと呼びます.AnnotationConfigApplicationContextは、ApplicationContextインタフェースのインプリメンテーションであり、インプリメンテーションで作成したAppConfigをパラメータに渡す.コンテナに登録されている空のクエリー
すべての空の出力
1.ac.getBenDefinitionNames():スプリングに登録されているすべての空をクエリーします.
2.ac.getBean():空のオブジェクトをクエリーします.
アプリケーションの空の出力
スプリング内部に使用するスペースはgetRole()で区切ることができます.
空の名前.ROLE APPLICATIONは、通常、ユーザ定義のVINである.
クエリー・タイプには同じタイプがあります.
クエリー・タイプが同じ場合は、エラーが発生します.
ac.getBeansOfType()は、このタイプのすべての空をクエリーできます.
BeanFactoryとApplicationContext
BeanFactoryはSpringコンテナのトップレベルのインタフェースです.
スプリングシートの管理と照会を担当します.getBean()などの方法を提供します.
ApplicationContextは、すべてのBenFactory機能を継承し、提供します.ApplicationContextは、BenFactory以外のさまざまなインタフェースを継承し、さまざまな機能を提供します.
bean設定メタデータについて
スプリング容器は、様々な形態の設定情報を受信できるように設計されている.
ex) java, xml, groovy,...
スプリングはBeanDefinitionの情報のみを利用しており、JavaロビンをデザインしてもXMLをデザインしても仕様通りにデザインすればいいので、BeanDefinitionを見ればいいのです.
たんトンコンテナ
スプリングを使用する最大の原因は、いつも1トンのコンテナを維持していることです.
以前作成したAppConfigを純Javaとして実行しましょう
memberServiceの作成new memberRepositoryでオブジェクトを作成し、orderServiceを作成new memberRepositoryでオブジェクトを作成します.
Webアプリケーションとして扱うと、ユーザーの要求に応じて新しいオブジェクトが作成されます.
したがって、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("싱글톤 객체 로직 호출");
}
}
モノトーンオブジェクトを静的に宣言し、プライベートジェネレータとして宣言することで、外部ジェネレータによるオブジェクトの生成が阻止されます.このようなモノトーンモードの問題は、クライアントがまず特定のクラスに依存することである.また、様々なモノトーンモードの問題もあります.
単トンコンテナの利点
モノクロコンテナは、モノトーンモードを適用する必要がなく、オブジェクトインスタンスをモノトーン管理できます.スプリングコンテナは、これらの単色調コンテナを使用することによって、単一トーンモードの乱雑なコードを記述することなく、DIP、OCP、privateなどの問題を解決することができる.
単トンコンテナ設計注意事項
モノクロコンテナは、最終的にはオブジェクトを作成し、オブジェクトを管理する方法であり、そのオブジェクトは保持状態として作成できません.
クライアントが依存フィールドまたはクライアントによって値を変更する方法では、その後どこでどのような内容が変更されたのか、できるだけ読み取り専用の方法を使用する必要があります.
Reference
この問題について(スプリングコア原理2章), 我々は、より多くの情報をここで見つけました https://velog.io/@wook2pp/스프링-핵심-원리-2장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol