공부하는 다락방

개념 정리 본문

정리

개념 정리

권파인 2015. 11. 18. 11:44

스프링 IoC(제어의역전) -

 IoC(Inversion of Control - 제어의 역전)란?

간단하게 말하여 프로그램의 제어 흐름 구조가 바뀌는 것이다.

일반적으로, main() 같은 프로그램이 시작되는 지점에서 다음에 사용할 오브젝트를 결정, 생성하고, 만들어진 오브젝트 내의 메소드를 호출하는 작업을 반복한다. 이런 구조에서 각 오브젝트느 프로그램 흐름을 결정하거나 사용할 오브젝트를 구성하는 작업에 능동적으로 참여한다.

즉, 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조이다.

 

이에 반하여 IoC는 제어 흐름의 개념을 거꾸로 뒤집는다. 오브젝트는 자신이 사용할 오브젝트를 스스로 생성하거나 선택하지 않는다. 그리고 자신이 어떻게 만들어지고 어디서 사용되는지 알 수 없다. 모든 제어 권한을 자신이 아닌 다른 대상에게 위임하는 것이다. 프로그램의 시작을 담당하는 main()같은 엔트리 포인트를 제외하면 모든 오브젝트는 이런 방식으로 위임받은 제어 권한을 갖는 특별한 오브젝트에 의해 결정되고 만들어지는 것이다.

 

위의 내용을 토대로 IoC를 요약하여 말하자면 아래와 같이 정의할 수 있다.

- 작업을 수행하는 쪽에서 Object 를 생성하는 제어 흐름의 개념을 거꾸로 뒤집는다.
- IoC 에서는 Object 가 자신이 사용할 Object 를 생성하거나 선택하지 않는다.
- 또한 Object 는 자신이 어떻게 생성되고 어떻게 사용되는지 알 수 없다.
- 모든 Object 는 제어 권한을 위임받는 특별한 Object 에 의해서 만들어 지고 사용된다. 

 

 

IoC 구현 방법

* DL (Dependency Lookup)  - 의존성 검색

        저장소에 저장되어 있는 빈(Bean)에 접근하기 위하여 개발자들이 컨테이너에서 제공하는 API 를 이용하여 사용하고자 하는 빈(Bean) 을 Lookup 하는 것

* DI (Dependency Injection) - 의존성 주입

        각 계층 사이, 각 클래스 사이에 필요로 하는 의존 관계를 컨테이너가 자동으로 연결해주는것

        각 클래스 사이의 의존 관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것

        DL 사용 시 컨테이너 종속성이 증가하여, 이를 줄이기 위하여 DI를 사용

객체의 생성을 사용자가 직접 컨트롤하지 않고 객체의 생성을 컨트롤하는 컨테이너한테 넘기는 것을 말한다.

 

스프링의 장점 - mvc 모델로 로직과 뷰를 따로 작성하기 때문에 유지보수가 편리하다.

 

* static 변수와 일반변수의 차이점 :

static 변수 - 프로그램이 종료되기 전까지 값이 유지 되는 성질을 갖고있다.

일반 변수 - 값을 유지하지않기 때문에 초기값을 출력하게 된다.

 

* final 클래스, 메소드, 변수 :

final 클래스 - 상속이 불가 메소드처럼 속도면에서 향상

final 메소드 - 서브클래스에서 재정의가 불가

final 변수 - 변하지 않는 고정값을 사용할 때 사용 static과 자주 사용 됨.

 

Comments