이 영역을 누르면 첫 페이지로 이동
hoonDEV 블로그의 첫 페이지로 이동

hoonDEV

페이지 맨 위로 올라가기

hoonDEV

Angular 의존성 주입 - (1) 서비스

  • 2020.07.07 11:37
  • 공부/Angular

서비스 (Service)

사용하는 이유

  • 컴포넌트의 독립성을 보장하여 재사용성을 높이기 위해
  • 프로젝트의 복잡성을 낮추기 위해
  • 특정 기능을 어플리케이션 전역으로 분리하여 사용하기 위해

코드

서비스를 처음 생성하면 아래와 같은 기본 코드가 생성된다.

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class TempService {
  constructor() { }
}

@Injectable 데코레이터

서비스를 정의하는 클래스 위에 @Injectable이라는 데코레이터가 있다. 이 데코레이터는 Angular가 서비스를 정의하는 이 클래스를 서비스로서 인식하고 Dependency로 주입할 수 있도록 인젝터에 프로바이더로 등록한다.

  • provideIn : Angular 6에서 도입된 것으로, 프로퍼티 값으로 root를 설정하면 루트 인젝터에게 서비스를 제공하도록 지시한다. 이 경우, 싱글톤으로 생성되어 앱 전역에서 서비스를 Injection할 수 있게 한다.

서비스를 컴포넌트에서 사용하기

// 의존성 주입 패턴
constructor(private tempService: TempService) {} // Angular에게 인스턴스 주입 위임
// 위와 같이 생성자 파라미터에 접근 제한자를 선언하면 프로퍼티로 생성된다.

// 사용하지 말아야 할 패턴
tempService: TempService; // Property 생성
constructor() {
    this.tempService = new TempService(); // 직접 인스턴스 생성하고 할당
}

두 번째 코드와 같이 컴포넌트에서 서비스의 인스턴스를 생성하면, 서비스와 컴포넌트는 긴밀한 결합을 하게 된다. 이 경우 컴포넌트와 서비스가 서로 크게 의존하게 되어, 하나의 객체를 변경하면 다른 하나의 객체 또한 변경하여야 한다. 이는 큰 프로젝트일 수록 변경점을 확인하고 수정점에 대해 대응하기가 어렵다.

이를 해결하기 위해 인스턴스 생성을 Angular에서 하고, 그 인스턴스를 Angular가 컴포넌트에 주입해주는 첫 번째 코드 즉, 인스턴스 주입 방식을 이용한다. → 느슨한 결합

앞서 설명했던 provideIn: 'root' 가 느슨한 결합을 구현하기 위해 Angular에게 인스턴스 생성 주체를 위임하는 것이다.

서비스는 항상 컴포넌트에서만 사용할 수 있는 것은 아니므로, 앞으로는 구성요소라고 칭합니다.

'공부 > Angular' 카테고리의 다른 글

Angular에서 Tailwind CSS 사용해보기  (0) 2020.07.14
Angular 의존성 주입 - (4) 선택적 의존성 주입  (0) 2020.07.07
Angular 서비스 주입 - (3) 인젝션 토큰  (0) 2020.07.07
Angular 의존성 주입 - (2) 프로바이더 (Provider)  (0) 2020.07.07

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Angular에서 Tailwind CSS 사용해보기

    Angular에서 Tailwind CSS 사용해보기

    2020.07.14
  • Angular 의존성 주입 - (4) 선택적 의존성 주입

    Angular 의존성 주입 - (4) 선택적 의존성 주입

    2020.07.07
  • Angular 서비스 주입 - (3) 인젝션 토큰

    Angular 서비스 주입 - (3) 인젝션 토큰

    2020.07.07
  • Angular 의존성 주입 - (2) 프로바이더 (Provider)

    Angular 의존성 주입 - (2) 프로바이더 (Provider)

    2020.07.07
다른 글 더 둘러보기

정보

hoonDEV 블로그의 첫 페이지로 이동

hoonDEV

  • hoonDEV의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그

카테고리

  • 분류 전체보기 (91)
    • 일상 (13)
      • 후기 (1)
      • 계획 (11)
    • 공지사항 (1)
    • 알고리즘 (54)
      • 문제풀이 (53)
      • 이론 (1)
    • 공부 (19)
      • React (0)
      • Angular (5)
      • Java (3)
      • C, C++ (3)
      • JavaScript (6)
      • WEB (2)
    • 디자인 (1)
      • UI, UX (1)
    • 개발 (0)
      • boom (0)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 이분탐색
  • javascript
  • 알고리즘
  • 문제풀이
  • es6
  • 그리디
  • dp
  • 백준

나의 외부 링크

정보

훈개발자의 hoonDEV

hoonDEV

훈개발자

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © 훈개발자. Designed by Fraccino.

티스토리툴바