TIL
26_Step : DI & IoC
afeel91
2021. 11. 9. 08:15
강한결합
강한결합은 하나의 코드를 변경했을 때 그와 연결된 다른 코드들에도 영향을 미쳐 같이 변경해줘야 하는 경우를 말한다.
하나의 클래스 생성자를 수정했을 경우 다른 클래스에 영향을 미치는 경우라고 볼 수 있다.
강한결합으로 작성된 코드는 변경점이 많아지기 때문에 좋은 코드가 아니다.
DI(Dependency Injection)
의존적 주입으로 객체를 외부에서 생성해 필요할 때마다 불러서 사용하는 방식이다.
DI의 장점은 객체의 생성자가 변경되었어도 외부의 코드만 수정하면 되기 때문에 강한결합으로 작성된 코드를 효율적으로 바꿀 수 있다.
IoC(Inversion of Control)
제어의 역전이라는 말로, 프로그램의 제어흐름이 뒤바뀌는 것을 의미한다.
- 빈 (Bean): 스프링 IoC 컨테이너가 관리하는 객체
- IoC 컨테이너: Bean의 의존성,객체생성,등록 등의 모든 과정을 관리
주로 Bean을 만들어 이를 주입하여 사용한다.
내부에 객체를 생성하여 개발자에 의해 제어되지 않고, 외부에서 주입되어 스프링에 의해 제어되는 과정이다.
객체지향프로그래밍은 캡슐화를 통한 높은 응집도와 낮은 결합도를 지향하기 때문에 IoC 방식의 코드를 작성하는 것이 좋다.