본문 바로가기

프레임워크/스프링

Spring_내용설명_01) Spring Framework의 IoC(Inversion of Control)란

Inversion of Control: 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 자체적으로 만드는 것이 아니라,스프링과 같은 장치로 부터 주입 받아 사용하는 방법을 말 함.

- 의존성의 역전을 말한다. 의존성을 자신이 직접 정의하는 것이 아닌 스프링이 만들어둔 장치(@Autorwire, @Resource등)를 이용하여 값을 받아서 사용하는 것. 

- 여기서 의존성은 다른 클래스( example class : AClass )나 인터페이스( example interface : AInter )와 상속 또는 구현의 관계에 있을때 이를 상속하거나 구현한 클래스( example class : BClass, CClass) 중 어떠한 클래스가 들어가나에 따라 달라지는 의존적인 관계를 의미한다.

ex) 
class AClass{ }

interface AInter{ }

class BClass extends AClass implements AInter {
//to do method
}

class CClass extends AClass implements AInter {
//to do method
}

class Main{
    static void main(string[] args){
        AClass bClass = new BClass(); // AClass 에서 정의되어 상속되어진 오버라이드된 B의 메소드가 사용됨
        AClass cClass = new CClass (); // AClass 에서 정의되어 상속되어진 오버라이드된 C의 메소드가 사용됨
        AInter bInter = new BClass(); // AInter 에서 정의되어 구현되어진 오버라이드된 B의 메소드가 사용됨
        AInter cInter = new CClass (); // AInter 에서 정의되어 구현되어진 오버라이드된 C의 메소드가 사용됨
    }
}

- 위의 4가지 상황처럼 어떤 클래스로 구현이나 상속되어지느냐에 따라 같은 메소드를 호출하더라도 다른 상황이 연출되는데 이를 의존성이라 한다.

- 위 상황에서 저러한 상황의 연출을 사용자가 직접 구현하는게 아닌 스프링에서 제공하는 장치를 사용하는것이 스프링의 IoC이다..