꾸물꾸물 졔의 개발공부
[Spring] 스프링 IOC (Inversion of Control) 본문
IoC (Inversion of Control)
IOC는 SPRING 뿐만 아니라 모든 프로그래밍에서 사용될 수 있는 범용적인 개념이다.
IoC는 Inversion of Control의 약자로 Inversion = 역전, Control = 제어. 즉, 제어의 역전을 말한다.
말 그대로 메소드나 객체의 호출작업을 개발자가 결정하고 제어하는 것이 아니라, 외부(스프링 컨테이너)에 제어권이 넘어가 외부에 의해 결정되는 것을 의미한다.
public class A {
private B b;
public A(){
b = new B();
}
}
위와 같은 경우에는 A클래스 내부에서 new 생성자를 통해 B를 직접 생성 하고 변수에 할당해줌으로써 'A가 B에게 의존하고 있음'을 개발자가 직접 표현해주고 있다. 즉, 개발자가 제어를 관리하고 있다.
하지만 SPRING 에서는,
@Component
Public class B{
}
Public class A{
@Autowired
private B b;
}
@Autowired 어노테이션을 사용하여 객체를 주입받았다. B라는 객체가 스프링 컨테이너에 의해 관리되고 있는 객체 Bean이라면, @Autowired를 통해 객체를 주입받을 수 있게 된다.
이것은 스프링 컨테이너에서 직접(제어) 객체를 생성하여 A객체에 주입시켜 준 것이다.
이것이 바로 제어가 역전된 경우다.
개발자가 직접 해왔던 제어를 스프링 컨테이너에서 대신 해주는 것이 IoC의 개념이다.
IoC 를 사용하는 이유 ?
👍제어의 역전의 장점
- 객체 간 결합도를 낮춘다
- 유연한 코드 작성 가능
- 가독성 증진
- 코드 중복 방지
- 유지 보수 용이
기존에는 객체가 필요할 때마다 필요 클래스 내부에서 새롭게 생성하고 사용했지만, IoC를 적용하게 되면 미리 생성해 놓은 객체를 주입받아 사용하기만 하면 된다.
'SPRING' 카테고리의 다른 글
[Spring JPA] 패러다임의 불일치 (0) | 2023.03.27 |
---|---|
[Spring JPA] JPA란 (0) | 2023.03.23 |
[Spring] 스프링 DI (Dependency Injection) (0) | 2023.03.14 |
[Spring] 스프링 컨테이너란 (0) | 2023.03.09 |
[Springboot] JWT(6) _ 로그아웃 구현/AccessToken 블랙리스트 + RefreshToken 삭제 + Redis (0) | 2022.08.24 |