개발자의 공부방/스프링

스프링 기초] IoC 제어의 역전과 프레임워크 그리고 라이브러리.

  • -
728x90
반응형

IoC(Inversion of Control)

제어의 역전을 의미하는데 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라 한다.

 

즉, 쉽게 이야기하면 내가 무언가를 호출해서 직접 실행하는 것이 아닌 프레임워크 같은 것이 대신 호출을 해주는 것이다. 그렇기 때문에 이름 자체가 제어의 역전이다. 말 그대로 제어하는 것이 역전되 버렸다!

 

역전재판.....역전했다!!!...(개그)

위에 언급한 것 중 프레임워크가 있는데 이 IoC의 개념의 관점에서 설명하기 아주 좋은 예이다.


프레임워크와 라이브러리의 차이?

제어의 역전(IoC) 라는 개념의 관점에서 보면 프레임워크는 내가 작성한 코드를 제어하고, 대신 실행시켜주는 것이고

라이브러리는 내가 작성한 코드가 직접 제어의 흐름을 담당하는 것을 말한다.

즉, 제어의 권한이 어디에 있느냐에 따라 프레임워크냐 라이브러리냐를 말할 수 있다.

 

예)

package hello.core.member;


import hello.core.AppConfig;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class MemberTest {

    MemberService memberService;

    //TEST 실행 시 무조건 실행.
    @BeforeEach
    public void beforeEach() {
        AppConfig appConfig = new AppConfig();
        memberService = appConfig.memberService();
    }

    @Test // <---- 제어권을 가진 녀석.
    void join() {
        //given
        Member member = new Member(1L, "memberA", Grade.VIP);

        //when
        memberService.join(member);
        Member findMember = memberService.findMember(1L);

        //then
        Assertions.assertThat(member).isEqualTo(findMember);
    }



}

 

위의 코드를 보면 void join의 코드는 개발자는 단순히 로직만 작성한 것이고, 실행은 JUnit의 @Test가 하는 것이다.

그렇다면 JUnit은 라이브러리가 아닌 프레임워크라고 할 수 있다.

JUnit5 홈페이지에 대놓고 테스팅 프레임워크라고 적혀있다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.