toss/nestjs-aop

NestJS에서 AOP(관점 지향 프로그래밍)를 우아하게 적용하고 데코레이터에서 NestJS 관리 인스턴스를 사용할 수 있는 라이브러리

개발 재료맘대로 써도 됨 · MIT백엔드·DBTypeScript난이도
257+0이번 주0
31포크2이슈

중간맛 분석

TypeScript + NestJS 스택의 데코레이터 기반 AOP 구현 도구입니다. 난이도는 중상(3/5)으로, NestJS 모듈·프로바이더·데코레이터의 기본 이해가 필요합니다. 설치 후 즉시 커스텀 데코레이터를 만들어 사용 가능합니다. 공식 예제(캐시 데코레이터)와 테스트 초기화 안내가 있어 실전 적용이 직관적입니다.

이런 레포예요

이럴 때 쓰면 좋아요

  • 메서드 결과를 캐싱하여 반복 호출 최적화
  • 로깅·성능 측정·권한 검사 같은 횡단 관심사를 메서드 수준에서 관리

핵심 기능

NestJS 의존성 주입과 통합된 커스텀 데코레이터 작성Symbol 기반 메타데이터를 통한 유연한 AOP 적용wrap 메서드로 메서드 실행 전후 로직 삽입

대안 대비 차별점

기존 NestJS 인터셉터나 가드와 달리, 프로바이더 의존성을 직접 받아서 데코레이터 내부에서 사용 가능하며 메서드 래핑을 더 세밀하게 제어할 수 있습니다.

먹어본 사람들

실제로 차려 먹어본 손님들의 흔적이에요 — 한마디와 완주 인증 모두 검수 후 공개돼요.

시식평 · 먹어본 사람 한마디

아직 시식평이 없어요. 먹어보셨다면 첫 한마디를 남겨주세요.

다른 레포 시식평 구경하기 →

이 레포로 만든 것들

🖋 완주 인증하기

아직 이 레포로 만든 완주 인증이 없어요. 첫 밥도장을 찍어보세요!

이 레포, 해먹는 법

처음 오셨어요? 어렵지 않아요 — 위에서 아래로 따라 하면 내 컴퓨터에 이 레포를 차려서 바로 맛볼 수 있어요.

준비물

  • NestJS 기본 이해
  • TypeScript
  • 데코레이터 문법 이해

바로 차려먹기Node.js (pnpm)

깃밥이 레포 구조를 확인하고 만든 실행 명령이에요. 터미널에 붙여넣으면 받기부터 실행까지 한 번에 진행돼요.

git clone --depth 1 https://github.com/toss/nestjs-aop.git &&
cd nestjs-aop &&
pnpm install

실행 명령은 README를 확인하세요.

코드는 내 컴퓨터에서 실행돼요 — 처음 보는 레포라면 내용을 한번 훑어보고 실행하는 습관을 추천해요.

README가 안내하는 자세한 단계 보기
  1. 라이브러리 설치
npm install @toss/nestjs-aop
  1. AppModule에 AopModule 임포트
import { AopModule } from '@toss/nestjs-aop';

@Module({
  imports: [AopModule],
})
export class AppModule {}
  1. 데코레이터 심볼 생성
export const CACHE_DECORATOR = Symbol('CACHE_DECORATOR');
  1. LazyDecorator 구현
import { Aspect, LazyDecorator, WrapParams } from '@toss/nestjs-aop';

@Aspect(CACHE_DECORATOR)
export class CacheDecorator implements LazyDecorator<any, CacheOptions> {
  constructor(private readonly cache: Cache) {}

  wrap({ method, metadata: options }: WrapParams<any, CacheOptions>) {
    return (...args: any) => {
      let cachedValue = this.cache.get(...args);
      if (!cachedValue) {
        cachedValue = method(...args);
        this.cache.set(cachedValue, ...args);
      }
      return cachedValue;
    };
  }
}
  1. 프로바이더 등록
@Module({
  providers: [CacheDecorator],
})
export class CacheModule {}
  1. 데코레이터 팩토리 정의
import { createDecorator } from '@toss/nestjs-aop';

export const Cache = (options: CacheOptions) => createDecorator(CACHE_DECORATOR, options);
  1. 메서드에 적용
export class SomeService {
  @Cache({ /* 옵션 */ })
  some() {
    // 로직
  }
}

깃밥트라이로 맛보기

받아보기 귀찮고 살짝 불안했다면 — 안전 스캔부터 설치까지 터미널 한 줄로 끝나요.

터미널에 붙여넣으면 깃밥 안전 스캔 → 격리 폴더 clone → 설치 → 실행법 안내까지 자동이에요. 처음이어도 괜찮아요 — 이 한 줄이 전부예요.

npx gitbap-try toss/nestjs-aop

Node.js만 있으면 설치 없이 실행돼요 · 깃밥트라이가 뭐예요? →

별 추이 · 7일

257+0 / 7일

활용성 · 따라 만들기 좋은가

샘플 점수 20/100
  • 관대한 라이선스
  • 테스트 있음
  • 예제 디렉토리
  • 최근 활동
  • AGENTS.md
  • llms.txt
  • 템플릿

⚪ 최근 활동 정보 없음 · 2022년 생성

「백엔드·DB」 이런 레포, 매주 받아보실래요?

매주 월요일 아침, 골라 담은 밥상만. 광고 없이 · 언제든 해지.

내 레포인가요? README에 깃밥 배지 달기
[![깃밥](https://www.gitbap.com/badge/toss/nestjs-aop.svg)](https://www.gitbap.com/r/toss/nestjs-aop)
🔌 클로드에서 바로 써보기 — 깃밥 연결하는 법

깃밥을 클로드에 연결하면 이런 레포를 클로드·커서·Codex에서 바로 찾고 체험할 수 있어요.

방법 ① 커넥터 URL

클로드 설정 → 커넥터에 이 주소를 붙여넣기.

https://www.gitbap.com/api/mcp
방법 ② 플러그인 (체험까지)

플러그인을 설치하면 /gitbap-trending·/gitbap-try 슬래시 커맨드로 레포를 그 자리에서 체험. Claude Code에서 아래 두 줄을 차례로 실행하세요.

/plugin marketplace add jakeparkcolde/gitbap-cowork
/plugin install gitbap-cowork@gitbap
연결 방법 자세히 →

AI가 README 기반으로 요약했습니다 · 원문 보기