NestJS에서 AOP(관점 지향 프로그래밍)를 우아하게 적용하고 데코레이터에서 NestJS 관리 인스턴스를 사용할 수 있는 라이브러리
중간맛 분석
TypeScript + NestJS 스택의 데코레이터 기반 AOP 구현 도구입니다. 난이도는 중상(3/5)으로, NestJS 모듈·프로바이더·데코레이터의 기본 이해가 필요합니다. 설치 후 즉시 커스텀 데코레이터를 만들어 사용 가능합니다. 공식 예제(캐시 데코레이터)와 테스트 초기화 안내가 있어 실전 적용이 직관적입니다.
이런 레포예요
이럴 때 쓰면 좋아요
- 메서드 결과를 캐싱하여 반복 호출 최적화
- 로깅·성능 측정·권한 검사 같은 횡단 관심사를 메서드 수준에서 관리
핵심 기능
대안 대비 차별점
기존 NestJS 인터셉터나 가드와 달리, 프로바이더 의존성을 직접 받아서 데코레이터 내부에서 사용 가능하며 메서드 래핑을 더 세밀하게 제어할 수 있습니다.
먹어본 사람들
실제로 차려 먹어본 손님들의 흔적이에요 — 한마디와 완주 인증 모두 검수 후 공개돼요.
이 레포, 해먹는 법
처음 오셨어요? 어렵지 않아요 — 위에서 아래로 따라 하면 내 컴퓨터에 이 레포를 차려서 바로 맛볼 수 있어요.
준비물
- NestJS 기본 이해
- TypeScript
- 데코레이터 문법 이해
바로 차려먹기Node.js (pnpm)
깃밥이 레포 구조를 확인하고 만든 실행 명령이에요. 터미널에 붙여넣으면 받기부터 실행까지 한 번에 진행돼요.
git clone --depth 1 https://github.com/toss/nestjs-aop.git && cd nestjs-aop && pnpm install
실행 명령은 README를 확인하세요.
코드는 내 컴퓨터에서 실행돼요 — 처음 보는 레포라면 내용을 한번 훑어보고 실행하는 습관을 추천해요.
README가 안내하는 자세한 단계 보기
- 라이브러리 설치
npm install @toss/nestjs-aop
- AppModule에 AopModule 임포트
import { AopModule } from '@toss/nestjs-aop';
@Module({
imports: [AopModule],
})
export class AppModule {}
- 데코레이터 심볼 생성
export const CACHE_DECORATOR = Symbol('CACHE_DECORATOR');
- 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;
};
}
}
- 프로바이더 등록
@Module({
providers: [CacheDecorator],
})
export class CacheModule {}
- 데코레이터 팩토리 정의
import { createDecorator } from '@toss/nestjs-aop';
export const Cache = (options: CacheOptions) => createDecorator(CACHE_DECORATOR, options);
- 메서드에 적용
export class SomeService {
@Cache({ /* 옵션 */ })
some() {
// 로직
}
}
깃밥트라이로 맛보기
받아보기 귀찮고 살짝 불안했다면 — 안전 스캔부터 설치까지 터미널 한 줄로 끝나요.
터미널에 붙여넣으면 깃밥 안전 스캔 → 격리 폴더 clone → 설치 → 실행법 안내까지 자동이에요. 처음이어도 괜찮아요 — 이 한 줄이 전부예요.
npx gitbap-try toss/nestjs-aop
Node.js만 있으면 설치 없이 실행돼요 · 깃밥트라이가 뭐예요? →
별 추이 · 7일
활용성 · 따라 만들기 좋은가
- 관대한 라이선스
- 테스트 있음
- 예제 디렉토리
- 최근 활동
- AGENTS.md
- llms.txt
- 템플릿
⚪ 최근 활동 정보 없음 · 2022년 생성
「백엔드·DB」 이런 레포, 매주 받아보실래요?
매주 월요일 아침, 골라 담은 밥상만. 광고 없이 · 언제든 해지.
내 레포인가요? README에 깃밥 배지 달기
[](https://www.gitbap.com/r/toss/nestjs-aop)🔌 클로드에서 바로 써보기 — 깃밥 연결하는 법
깃밥을 클로드에 연결하면 이런 레포를 클로드·커서·Codex에서 바로 찾고 체험할 수 있어요.
클로드 설정 → 커넥터에 이 주소를 붙여넣기.
https://www.gitbap.com/api/mcp플러그인을 설치하면 /gitbap-trending·/gitbap-try 슬래시 커맨드로 레포를 그 자리에서 체험. Claude Code에서 아래 두 줄을 차례로 실행하세요.
/plugin marketplace add jakeparkcolde/gitbap-cowork/plugin install gitbap-cowork@gitbapAI가 README 기반으로 요약했습니다 · 원문 보기