スプリングIoC容器
IoC (Inversion of Control)
依存関係注入(DependecyInjection)とも呼ばれ、あるオブジェクトを直接作成して使用する依存オブジェクトではなく、注入されて使用する方法を指します.
private BookRepository bookRepository = new BookRepository();
private BookRepository bookRepository;
public BookService(BookRepository bookRepository){
this.bookRepository = bookRepository;
}
IoC容器
管理
BeanFactory / ApplicationContext
空工場(BeanFactory):IoCコンテナの最上位インタフェースは、空(bean)を管理するコンテナです.
DI(Dependency Injection)
<例>
public OwnerController(OwnerRepository Serviec, ApplicationContext applicationContext){
this.owners = Service;
this.applicationContext = applicationContext;
}
ApplicationContextを直接使用するコード
@GetMapping("/bean")
@ReponseBody
public String bean(){
return "bean : " + applicationContext.getBean(OwnerController.class);
}
ApplicationContextを直接使用せずに同じ結果を出力するコード
@GetMapping("/bean")
@ReponseBody
public String bean(){
return "bean : " + owners;
}
上記の例では、アプリケーション全体でオブジェクトが再利用されるため、同じ所有者オブジェクトのハッシュ値が出力されます.これらのインスタンスは、単音スキャンの空のインスタンスとして登録される.モノトーンでオブジェクトを作りたい場合、IoC容器を使うと便利です.IoCコンテナに何も説明せずに空に登録した場合、デフォルトではモノトーンのコロンとして登録されます.
シングルトーンは常に同じオブジェクトを使用するため、メモリの面で非常に効果的であり、コンテナで作成したオブジェクトを実行時に使用すると、パフォーマンスの最適化に役立ちます.
Reference
この問題について(スプリングIoC容器), 我々は、より多くの情報をここで見つけました https://velog.io/@sileeee/스프링IoC컨테이너テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol