복붙노트

[SPRING] 제어 반전과 의존성 주입의 차이점 [중복]

SPRING

제어 반전과 의존성 주입의 차이점 [중복]

IoC 및 DI 개념은 매우 혼란스러워서 많은 사람들의 의견과 게시물을 읽고 결국 결론에 도달했습니다. 그래서 나는이 주제들이 ...

반전 제어는 느슨하게 결합되고보다 쉽게 ​​유지 보수 가능한 응용 프로그램을 작성하기위한 Java의 기술이며 종속성 삽입은이 개념 (기술)을 달성하는 방법 중 하나입니다.

Inversion of control container는 Java 클래스에서 런타임에 종속성을 주입하여 느슨하게 결합 된 응용 프로그램을 만듭니다.

사실입니까? 내가 틀렸다면 나를 바로 잡아라.

해결법

  1. ==============================

    1.IoC는 응용 프로그램에서 프레임 워크의 메서드를 호출하는 대신 일반 용어로, 프레임 워크는 응용 프로그램에서 제공하는 구현을 호출합니다.

    IoC는 응용 프로그램에서 프레임 워크의 메서드를 호출하는 대신 일반 용어로, 프레임 워크는 응용 프로그램에서 제공하는 구현을 호출합니다.

    DI는 IoC의 한 형태이며, 구현은 생성자 / 설정자 / 서비스 조회를 통해 객체로 전달되며, 객체는 올바르게 동작하기 위해 의존합니다.

    참조 : Inversion of Control과 Dependency Injection

  2. ==============================

    2.이들은 자바 프로그래밍에서 느슨한 결합을 이루기위한 패턴이다.

    이들은 자바 프로그래밍에서 느슨한 결합을 이루기위한 패턴이다.

    DI (Dependency Injection) : 의존성 주입은 객체의 인스턴스를 만드는 데 사용되는 패턴입니다. 컴파일시에 알지 못하더라도 다른 객체가 의존합니다. 이 클래스는 그 기능을 제공하거나 객체에 속성을 주입하는 방법을 의존성 주입이라고 부릅니다.

    의존성 주입에는 세 가지 유형이 있습니다.

    Spring은 Constructor Injection과 Setter / Getter Injection만을 지원합니다.

    IOC (반전 제어) : 응용 프로그램이 의존하는 객체의 인스턴스를 만들고 삽입하기 위해 컨테이너에 제어권을 부여하면 new 연산자를 사용하여 객체를 만드는 대신 컨테이너가 수행하게합니다. 특정 기능을 제공하는 구성 요소를 활성화하려면 메커니즘이 필요하기 때문에 제어 반전은 종속성 주입에 의존합니다.

    이 두 가지 개념은 훨씬 유연하고 재사용 가능하며 캡슐화 된 코드를 작성할 수 있도록이 방법으로 함께 작동합니다. 따라서 객체 지향 솔루션을 설계 할 때 중요한 개념입니다.

    의존성 삽입 예제

    이전에는 다음과 같은 코드를 작성했습니다.

    Public MyClass{
     DependentClass dependentObject
     /*
      At somewhere in our code we need to instantiate 
      the object with new operator  inorder to use it or perform some method.
      */ 
      dependentObject= new DependentClass();
      dependentObject.someMethod();
    }
    

    종속성 주입을 사용하면 종속성 인젝터가 인스턴스화를 수행합니다.

    Public MyClass{
     /* Dependency injector will instantiate object*/
     DependentClass dependentObject
    
     /*
      At somewhere in our code we perform some method. 
      The process of  instantiation will be handled by the dependency injector
     */ 
    
      dependentObject.someMethod();
    }
    

    인스턴스화 및 주입을 위해 다른 컨테이너 (예 : 컨테이너)에 제어를 제공하는 위의 프로세스는 Inversion of Control

    당신은 의존성 주입과 IOC에 관한 더 많은 것을 나의 대답에서 읽을 수있다 : - 개념의 장점과 응용을 여기서 찾을 수있다.

    의존성 주입이란 무엇입니까?

  3. ==============================

    3.제어의 반전은 프로그램이 IOC의 하위 집합 인 동안 DI (Dependency Injection)가 일반적인 상위 용어 인 반면 IOC (제어 반전)는 일반적인 상위 용어입니다. IOC는 응용 프로그램의 흐름이 반전되는 개념입니다. 해당 엔티티의 일부가 아닌 로직 제어는 다른 사람이 수행합니다. DI는 객체에 필요한 객체를 제공합니다. 따라서 종속성 자체가 생성되는 대신 주입됩니다. 위의 방법으로 얻을 수있는 가장 큰 이점은 "디커플링 (Decoupling)"입니다. 객체를 호출하고 객체를 독립적으로 유지하는 객체를 전달하여 재사용 및 유지 관리를 향상시킬 수 있습니다.

    제어의 반전은 프로그램이 IOC의 하위 집합 인 동안 DI (Dependency Injection)가 일반적인 상위 용어 인 반면 IOC (제어 반전)는 일반적인 상위 용어입니다. IOC는 응용 프로그램의 흐름이 반전되는 개념입니다. 해당 엔티티의 일부가 아닌 로직 제어는 다른 사람이 수행합니다. DI는 객체에 필요한 객체를 제공합니다. 따라서 종속성 자체가 생성되는 대신 주입됩니다. 위의 방법으로 얻을 수있는 가장 큰 이점은 "디커플링 (Decoupling)"입니다. 객체를 호출하고 객체를 독립적으로 유지하는 객체를 전달하여 재사용 및 유지 관리를 향상시킬 수 있습니다.

  4. ==============================

    4.Inversion of Control (IoC)은 프레임 워크 또는 런타임이 프로그램 흐름을 제어하는 ​​프로그래밍 스타일을 나타냅니다. 제어 반전은 정상적인 방법으로 제어를 변경한다는 것을 의미합니다. 그것은 Dependency Inversion Principle에서 작동합니다.

    Inversion of Control (IoC)은 프레임 워크 또는 런타임이 프로그램 흐름을 제어하는 ​​프로그래밍 스타일을 나타냅니다. 제어 반전은 정상적인 방법으로 제어를 변경한다는 것을 의미합니다. 그것은 Dependency Inversion Principle에서 작동합니다.

    DI는 느슨하게 결합 된 코드를 개발할 수있는 소프트웨어 디자인 패턴입니다. DI는 소프트웨어 구성 요소 간의 긴밀한 결합을 줄이는 좋은 방법입니다. 또한 DI를 통해 소프트웨어의 향후 변경 사항 및 기타 복잡성을보다 효과적으로 관리 할 수 ​​있습니다. DI의 목적은 코드를 유지 보수 가능하게 만드는 것입니다.

  5. ==============================

    5.IOC는 "Inversion of Control"의 약자입니다. 그것은 IOC 원칙에 기초하여 작동 할 것이고, 이는 객체를 공동 작업하고 생명주기의 객체를 관리하는 것을 의미합니다. 공동 작업이란 객체가 한 곳에서 함께 그룹이라는 것을 의미합니다. 우리는 객체를 공동 작업 할 수있는 두 가지 방법으로 Dependency Pull과 Dependency Injection을 수행합니다. DP는 두 가지 방법 (의존성 풀과 문맥 의존성 풀)으로 나뉘며 DI는 두 가지 방법 (Setter Injection 및 Constructor Injection)으로 나뉩니다 .IOC는 두 가지 방법을 모두 지원하지만 스프링 프레임 작업의 주된 의도는 우리 구성 요소가 완전히 느슨하게 이루어질 것입니다 결합. 우리가 Dependency pull을 사용한다면 Spring 프레임 워크의 일부로 비록 다른 클래스와 밀접하게 결합 될 것입니다. 그렇다면 Dependency Injection (Setter Injection 또는 Constructor Injection)을 권장합니다. IOC와 DI 사이에는 차이가 없습니다 .IOC는 다르며 DI는 다릅니다. DI는 IOC의 일부입니다.

    IOC는 "Inversion of Control"의 약자입니다. 그것은 IOC 원칙에 기초하여 작동 할 것이고, 이는 객체를 공동 작업하고 생명주기의 객체를 관리하는 것을 의미합니다. 공동 작업이란 객체가 한 곳에서 함께 그룹이라는 것을 의미합니다. 우리는 객체를 공동 작업 할 수있는 두 가지 방법으로 Dependency Pull과 Dependency Injection을 수행합니다. DP는 두 가지 방법 (의존성 풀과 문맥 의존성 풀)으로 나뉘며 DI는 두 가지 방법 (Setter Injection 및 Constructor Injection)으로 나뉩니다 .IOC는 두 가지 방법을 모두 지원하지만 스프링 프레임 작업의 주된 의도는 우리 구성 요소가 완전히 느슨하게 이루어질 것입니다 결합. 우리가 Dependency pull을 사용한다면 Spring 프레임 워크의 일부로 비록 다른 클래스와 밀접하게 결합 될 것입니다. 그렇다면 Dependency Injection (Setter Injection 또는 Constructor Injection)을 권장합니다. IOC와 DI 사이에는 차이가 없습니다 .IOC는 다르며 DI는 다릅니다. DI는 IOC의 일부입니다.

  6. ==============================

    6.Inversion of Control과 Dependency Injection은 Spring 프레임 워크의 핵심 디자인 패턴이다. IOC 및 DI 디자인 패턴은 자바에서 인기있는 디자인 패턴 인터뷰 질문이기도합니다. 이름에서 알 수 있듯이 제어 패턴의 반전 (Inversion of control pattern) 객체의 라이프 사이클을 관리하는 책임을 거꾸로합니다. 객체 생성, 의존성 설정 등을 애플리케이션에서 프레임 워크로 변경함으로써 Java 애플리케이션 작성을보다 쉽게 ​​할 수 있습니다.

    Inversion of Control과 Dependency Injection은 Spring 프레임 워크의 핵심 디자인 패턴이다. IOC 및 DI 디자인 패턴은 자바에서 인기있는 디자인 패턴 인터뷰 질문이기도합니다. 이름에서 알 수 있듯이 제어 패턴의 반전 (Inversion of control pattern) 객체의 라이프 사이클을 관리하는 책임을 거꾸로합니다. 객체 생성, 의존성 설정 등을 애플리케이션에서 프레임 워크로 변경함으로써 Java 애플리케이션 작성을보다 쉽게 ​​할 수 있습니다.

    더 읽기 : http://javarevisited.blogspot.com/2012/12/inversion-of-control-dependency-injection-design-pattern-spring-example-tutorial.html#ixzz4xve86pPN

  7. from https://stackoverflow.com/questions/26884881/difference-between-inversion-of-control-dependency-injection by cc-by-sa and MIT license