끄적끄적 코딩일지

[Spring 기초] IoC, DI, Bean 개념 본문

Spring

[Spring 기초] IoC, DI, Bean 개념

BaekGyuHyeon 2022. 5. 30. 10:31

의존관계(Dependency)란?

객체지향 프로그래밍에서 한 객체가 다른 객체를 사용한다는 것은 다른 객체를 생성하거나 다른 객체의 Method를 호출하는 행위를 말한다. 이를 호출하는 객체가 생성하거나 Method를 호출하는 객체를 의존한다고 표현한다.


Spring에서 IoC

Spring은 IoC(제어의 역전, Inversion of Control)를 지원하는 프레임워크로써 객체의 생성과 소멸같은 라이프사이클을 Spring 프레임 워크가 제어하고 있다.  IoC를 사용함으로써 얻을 수 있는 장점은

 

1. 느슨한 연관관계를 맺음으로써 결합도를 낮춘다. 

2. 프로젝트 유지보수가 용의하다.(수정이 최소화 된다.)

3. 메모리 관리가 효율적이다.

 

등이있다. 그러면 Spring에서 IoC으로 객체를 관리하는 방법을 사용하기위해 알아야 할것은 2가지다. 객체를 프레임워크에 맡기는 방법(Bean 등록)프레임워크에서 관리하고있는 객체를 호출하는 방법(DI, Dependency Injection, 의존관계 주입) 이다.

https://blablacoding.tistory.com/83

 

[Spring 기초] Bean 등록 및 사용하기(Autowired)

Bean 등록방법 Spring에서 Bean을 등록하는 방법은 크게 xml 파일을 사용하는 방법과 Annotation을 사용하는방법 2가지로 나뉜다.(최근에는 Annotation을 사용하는 방법이 주로 쓰인다.) xml 파일으로 등록하

blablacoding.tistory.com

 


DI(Dependency Injection)

의존관계 주입이라는 의미로 필요한 객체를 생성하거나 제어하는것이 아니라 외부에서 결정하여 연결하는 객체 관리 기법이다. Spring에서 개발자는 추상화 객체인 interface(사용되는 Method 정의만 해둔것)를 사용하고 Spring에서 실제 사용되는 구현체를 주입하게 함으로써 모듈간 결합도가 낮아지고 유연성이 높아진다. 참고로 Spring에서 관리하는 객체들을 모아둔것을 IoC Container 혹은 DI Container라고 한다.

 


Bean

Spring에서 관리하는 객체를 의미한다. 기본적으로 싱글톤 패턴으로 관리하며 필요에 따라 다른 디자인 패턴으로 사용 가능하다. Java에서 사용되는 대표적인 디자인 패턴은 아래글을 참고하면된다.

https://dailyheumsi.tistory.com/218

 

[디자인 패턴 17편] 디자인 패턴 총 정리. 생성편

지금까지 공부하며 정리한 GoF 디자인 패턴을 총 정리해보려고 한다. 최대한 간결하고 필요한 것만 남겨본다. 여기서는 구체적인 구현 코드는 적지않고, 이미 패턴이 구현된 객체들을 사용하는

dailyheumsi.tistory.com