Spring Framework


必要に応じて、必要な部分を熟知するだけで->Spring Coreを必ず理解し、残りのモジュールは必要な部分を検索するだけで学習できます.

Spring Framework


モジュール化の度合いが高く、必要な部分だけを提供します.
IoC/DI容器
全面的なMVC Frameworkを提供
AOPサポート

->spring-orm:ORM APIの統合層(JPA、JDO、Hibernateを含む)
->spring-web:マルチファイルアップロードやサーバリスナーなど、Web向けの統合機能を提供します.HTTPクライアントとSpringをリモートでサポートするWeb関連セクションを提供
->spring-webmvc:Web-SServletモジュール、Spring MVCとREST Webサービス実装を含む

Spring IoC/DI容器


コンテナ。


コンテナはインスタンスのライフサイクル(オブジェクトの作成、消去など)を管理し、作成したインスタンスに他の機能を提供します.
例えば、サーブレットを実行するWASは、サーブレットコンテナを有する.
->WebブラウザからサーバURLに対応するリクエストを受信した場合は、サーバをメモリに入れて実行します.つまり,開発者はサーブレットクラスを作成したが,実際には,メモリにアップロードして実行しているのがWASが所有するサーブレットコンテナである.
->サーブレットコンテナ同じサーブレットからのリクエストを受信すると、メモリにアップロードされない既存のサーブレットが実行され、結果がWebブラウザに転送されます.

IOC(Inversion of Control)


コンテナは、開発者が作成したコードではなく、インスタンス制御権を有し、制御反転(IoC)と呼ばれる.
前述したように,開発者はサーブレットクラスを作成したが,このサーブレットメソッドを呼び出すのはWASである.
->開発者が作成したクラスまたはメソッドは、IoCと呼ばれる他のプログラムの代わりに実行されます.
IoC 簡単なコードで表示
//클래스와 인터페이스의 관계 
//class STV implements TV
//class LTV implements TV

//상황 : 필요한 TV 객체 생성해야 하는 경우 

//ㄱ. IoC 적용 X
TV stv = new STV();
TV ltv = new LTV();
//인스턴스 생성 코드를 직접 호출해서 사용해야함

//ㄴ. IoC 적용 O
TV tv = tvFactory.getTV();
//TvFactory라는 TV 생성 공장을 만들어 TvFactory가 TV 객체를 생성해줌
->IoCが適用される場合、別のプログラムは、オブジェクトの代わりに値またはAnnotationで指定された値を渡す役割を果たします.
-Springで、>以上のコードでTvFactoryの役割を果たすプログラムを作成します.BenFactoryまたはApplicationContextはTvFactoryとして機能します.

DI(Dependency Injection)


ファクトリが上にオブジェクトを作成している場合は、作成したオブジェクトを使用する必要があります.この場合、オブジェクトを受信する必要があります.
オブジェクトをインポートする方法はDI(=注入依存性)
クラス間の依存関係は、コンテナが空の設定情報に基づいて自動的に関連付けられます.
  • DI未適用例
  • class 엔진{
    
    }
    
    class 자동차{
    	엔진 v = new 엔진();
    }
    
    ->開発者によるインスタンスの作成
  • SpringでDIを使用する例
  • @Component
    class 엔진{
    
    }
    
    @Component
    class 자동차{
    	@Autowired
        엔진 v;
    }

    ->IoCコンテナ上のコードのv参照変数にエンジンインスタンスを作成して割り当てます

    Springが提供するIoC/DI容器


    BeanFactory:IoC/DIの基本機能
    ApplicationContext:BenFactoryのすべての機能を含み、追加のトランザクションとAOPを処理できます.また、BeanPostProcessor、BeanFactoryPostProcessor、国際化処理、アプリケーションイベントを自動的に登録することもできます.
    BeanPostProcessor:コンテナを上書きする基本論理によるインスタンス化と依存処理ロジック
    BeanFactoryPostProcessor:使用可能なメタデータクラスタの移行
    注)https://www.boostcourse.org/web326/lecture/58970/?isDesc=false