[JAVA] Spring Ioc 용어 정리

전재준·2022년 1월 6일
0

Java

목록 보기
10/15

제어관계 역전

  • 간단히 프로그램의 제어 흐름 구조가 뒤바뀌는 것.
  • 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하지 않는다.
  • 모든 제어 권한을 자신이 아닌 다른 대상에게 위임한다. 위임 받은 제어권한을 갖는 특별한 오브젝트에 의해 만들어진다.
  • Ioc 라고도 부른다

빈(@Bean)

  • 스프링에서는 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 빈 이라고 부른다.
  • 오브젝트의 생성과 관계설정 사용 등을 제어해주는 제어의 역전이 적용된 오브젝트를 가르키는 말 이다.
  • 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 빈이라고 부름

빈팩토리(BeanFactory)

  • 스프링의 핵심을 담당하는건, 빅팩토리(BeanFactory), 어플리케이션 컨텍스트(ApplicationContext)

  • 스프링에서 빈의 생성과 관계설정 같은 제어를 담당하는 Ioc오브젝트를 빈팩토리라고 부른다. 더 확장 해서는 어플리케이션 컨텍스트 라고 부른다.

  • 빈팩토리라고 말할 때는 빈을 생성하고 관계를 설정하는 Ioc의 기본기능의 초점을 맞춘다.

  • 애플리케이션 컨텍스트 라고 말할 때는 애플리케이션 전반에 걸쳐 모든 구성요소의 제어 작업을 담당하는 Ioc엔진의 의미가 부각한다. 애플리케이션 컨텍스는 빈팩토리를 상속받는다.

  • 스프링에서는 애플리케이션컨텍스트, 빈팩토리, 스프링컨테이너라고도 부를 수 있다.

애플리케이션컨텍스트(ApplicationContext) 장점

  • 클라이언트는 구체적인 팩토리 클래스를 알 필요가 없다.
  • 애플리케이션 컨텍스트는 종합 Ioc서비스를 제공해준다.
    • 오브젝트가 만들어지는 방식, 시점과 전력을 다르게 가져갈 수 있다.
    • 자동생성, 오브젝트 후처리, 정보의 조합 설정, 방식의 다변화, 인터셉팅 등 오브젝트를 효과적으로 사용할 수 있는 기능을 제공한다.
  • 빈을 검색하는 다양한 방법을 제공한다.

싱글톤(Singleton)

  • 스프링은 여러번에 걸쳐 빈을 요청하더라도 매번 동일한 오브젝트를 돌려준다.
  • 스프링은 기본적으로 별다른 설정을 하지 않으면 내부에서 빈 오브젝트를 모두 싱글톤으로 만든다.
  • 서블릿은 대부분 멀티스레드 환경에서 싱글톤으로 동작한다, 서블릿 클래스당 하나의 오브젝트만 만들어두고 여러 스레드에서 하나의 오브젝트를 공유해서 동시에 사용한다.

자바 싱글톤 구현의 단첨

  • private 생성자를 갖고 있기 때문에 상속할 수 없음.
  • 싱글톤은 테스트하기 어려움.
  • 서버 환겨에서는 싱글톤이 하나만 만들어지는것을 보장하지 못한다(여러개의 JVM 환경에 따라 독립적으로 오브젝트가 생성된다).

스프링 싱글톤

  • 스프링은 직접 싱글톤 형태의 오브젝트를 만들고 관리하는 기능을 제공하는데 그것을 싱글톤 레지스트리라고 부른다.
  • private 생성자를 사용하지 않고, 평범한 자바 클래스를 싱글톤으로 활용 가능하게 해준다.

스코프(scope)

  • 스프링에서 관리하는 오브젝트, 빈이 생성되고 적용되는 범위를 스코프 라고한다.
  • 기본스코프는 싱글톤임.
  • 경우에 따라서 프로토타입은 싱글톤과 달리 컨터에너에 요청할 때마다 매번 새로운 오브젝트를 리턴시켜준다. 그 외에도 요청스코프, 세션스코프가 존재한다.

DI 의존관계주입

  • Ioc 컨테이너라고 불리던 스프링이 지금은 의존관계주입 DI 영문약자를 써서(Dependency Injection) DI 컨테이너라고 많이 불린다.
  • 오브젝트는 오브젝트에 주입할 수 있는게 아니라 오브젝트의 레퍼런스가 전달될 뿐이다.
  • DI는 오브젝트 레퍼런스를 외부로 부터 제공받아 주입한다.
  • 오브젝트가 만들어지고 나서 런타임 시에 의존관계를 맺는 대상, 즉 실제 사용대상인 오브젝트를 의존오브젝트라고 부른다.

DI 3가지 조건

  • 클래스모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않아야한다.
  • 런타임 시점의 의존관계는 제 3의 존재가 결정한다.
  • 오브젝트의 레퍼런스를 외부에서 제공 해줌으로 만들어진다.

참고자료

  • 토비의 스프링

0개의 댓글

관련 채용 정보