ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DI, IoC
    Spring 2024. 2. 22. 01:53

    DI, Dependency Injection

    의존성 주입이란 의미로, 객체를 직접 생성하는 것이 아닌 외부에서 주입하는 것을 의미합니다.

    class Sample{
        private Apple apple = new Apple();
    }

    일반적으로 의존성에 대한 제어권은 객체 자신이 갖습니다.

    class Sample{
        private Apple apple;
        
        public Sample(Apple apple){
        	this.apple = apple;
        }
    }
    
    class SampleTest{
        Apple apple = new Apple();
        Sample sample = new Sample(apple);
    }
    

    하지만, DI는 자신이 아닌, 다른 클래스에서 객체를 생성한 뒤 클래스의 생성자나 setter 등을 이용해 주입시켜줍니다.

    위의 예시로 보면 하단의 코드는 자기 자신이 객체를 생성하지 않고, SampleTest라는 클래스에서 Apple 객체를 생성하여, Sample 클래스의 생성자를 이용해 주입하는 것을 볼 수 있습니다.

    IoC, Inversion of Control

    제어의 역전이라는 의미로 메소드나 객체의 호출을 개발자가 결정하는 것이 아닌 외부에서 결정되는 것을 의미합니다.

    객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있도록하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 합니다.

    이를 사용해서, Spring에서는 제어의 흐름이 Repository -> Service -> Controller로 되며 Repository나 Service의 생성자가 바뀌어도, Controller의 변경이 필요하지 않게 됩니다.

    'Spring' 카테고리의 다른 글

    JPA, ORM, 영속성  (0) 2024.02.22
    Bean  (0) 2024.02.22
    Spring 3 Layer Architecture  (0) 2024.02.22
    @RequestParam, @PathVariable, @ModelAttribute, @RequestBody  (0) 2024.02.22
    Servlet  (0) 2024.02.22
Designed by Tistory.