[スプリングコア原理]-4

5812 ワード

これは金英漢のスプリングコア原理授業の学習内容だ。
  • 純DIコンテナ(AppConfig)要求のたびに新しいオブジェクトが作成されます->メモリの浪費が深刻です.
  • モノトーンモード

  • クラスインスタンス
  • のみを作成
    public class SingletonService {
    
        private static final SingletonService instance = new SingletonService();
    
        public static SingletonService getInstance(){
            return instance;
        }
    
        private SingletonService(){
    
        }
    }
  • getInstance():常に同じインスタンス
  • を返します.
        void singletonServiceTest(){
            SingletonService singletonService1 = SingletonService.getInstance();
            SingletonService 
            //...
    
            System.out.println("singletonService1 = " + singletonService1);
            //...
            Assertions.assertThat(singletonService1).isSameAs(singletonService2);
        }
  • isEqualto:比較値
  • isSameAs:オブジェクト比較
  • 短所

  • 実装コードがたくさんあります.
  • DIP,OCP違反:具体的.getInstance()
  • のテストは難しいです.
  • は柔軟性に欠けています.
  • 防モード
  • たんトンコンテナ

        void springContainer(){
    
            ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
            MemberService memberService1 = ac.getBean("memberService", MemberService.class);
            //...
    
            Assertions.assertThat(memberService1).isSameAs(memberService2);
        }
  • モノトーンモード管理オブジェクト
  • モノトーンパターン補完欠点
  • は、複数のリクエストを受信すると作成したオブジェクトを共有し、
  • を効率的に再利用する.

    モノトーンの注意点

  • の状態を維持するように設計することはできません.
  • 無状態に設計する必要があります.
  • スプリングシートのフィールドに共有値を設定できません.
  • @Configuration
  • がモノトーンであることを確認