본문 바로가기
웹개발/spring && springboot

스프링 IOC(Inversion Of Control)

by 지구별 여행자 임탱 2024. 2. 28.
728x90

스프링 IOC(제어의 역전) 
스프링의 IOC(Inversion of Control, 제어의 역전)는 객체의 생성부터 생명주기 관리까지 스프링 컨테이너가 처리하며, 개발자는 비즈니스 로직에 집중할 수 있도록 합니다.

IOC의 개념
 - IOC는 객체의 생성과 의존성 관리를 개발자가 아닌 스프링 프레임워크가 담당합니다. 이로 인해 개발자는 구현 객체를 변경하거나 관리할 필요 없이 객체 사용에만 집중할 수 있습니다.

 

IOC의 예제
전통적인 방식의 코드: 사용자가 직접 객체를 생성하며 의존성을 관리합니다.

public class TraditionalCar {
    private Engine engine;

    public TraditionalCar() {
        engine = new Engine(); // 객체 직접 생성
    }

    public void start() {
        engine.turnOn();
    }
}

 

IOC를 적용한 코드: IOC 컨테이너(스프링)가 객체의 생성과 의존성 주입을 담당합니다.

@Component
public class SpringCar {
    private Engine engine;

    @Autowired
    public SpringCar(Engine engine) { // 생성자 주입 방식
        this.engine = engine;
    }

    public void start() {
        engine.turnOn();
    }
}

상위 코드에서 @Component는 스프링 컨테이너가 관리할 객체임을 의미하며, @Autowired는 의존성을 자동으로 주입하도록 합니다. 여기서 Engine 클래스의 객체는 스프링에 의해 생성되고 관리됩니다.

IOC는 스프링에서 중요한 특징 중 하나로서, 애플리케이션의 코드를 깔끔하고 유지보수하기 쉽도록 만들어 줍니다.