ioc (Inversion of Control) 소개
2023. 12. 23. 18:19ㆍ- 서버/springboot
Ioc란?
inversion of control을 직역 하면 반전된 컨트롤이라는 뜻입니다. 컨트롤이 바꼈다는건데 그것은 무엇을 말하는 걸까요?
여러 컨트롤을 말할 수 있지만 주로 의존성을 뜻합니다.
의존성에 대한 컨트롤이 뒤바뀌었다 라고 이해 하시면 되겠습니다.
보통 의존성에 대한 주도권은 자기 자신이 가지고 있는게 일반적 입니다.
아래의 코드를 살펴 보겠습니다.
class OwnerController {
// 클래스 안에서 생성해서 관리
private OwnerRepository repository = new OwnerRepository();
}
OwnerController클래스 안에서 OwnerRepository객체를 생성하여 repository 변수에 넣어줬습니다. 이변수의 주도권은 OwnerController본인이 가지고 있습니다.
아래의 경우는 의존성이 바뀐 경우의 코드입니다.
class OwnerController {
private OwnerRepository repo;
public OwnerController(OwnerRepository repo) {
this.repo = repo;
}
// repo를 사용합니다.
}
class OwnerControllerTest {
@Test
public void create() {
OwnerRepository repo = new OwnerRepository();
OwnerController controller = new OwnerController(repo);
}
}
OwnerRepository클래스를 직접 생성 하지 않고 OwnerController생성자에서 OwnerRepository클래스를 받아 대입해주었습니다. OwnerRepository의존성을 OwnerController에게 주입한것 입니다.
여기서 의존성은 자신에게 있는게 아니기 때문에 의존성이 뒤바뀌었다고 볼수 있습니다.
참고자료
https://www.inflearn.com/course/lecture?courseSlug=spring&unitId=15538&tab=curriculum
'- 서버 > springboot' 카테고리의 다른 글
스트링부트에서 JPA로 데이터베이스 다루기(1) (0) | 2024.01.02 |
---|---|
인텔리제이 롬복 추가하기 (0) | 2024.01.01 |
스프링부트(springboot) 테스트코드 작성하기 (0) | 2023.12.30 |
인텔리제이 .gitignore 사용하기 (0) | 2023.12.30 |
spring initializer 사용법 (0) | 2023.12.28 |