toss/nestjs-aop
NestJS에서 AOP(관점 지향 프로그래밍)를 우아하게 적용하고 데코레이터에서 NestJS 관리 인스턴스를 사용할 수 있는 라이브러리
257+0이번 주0 찜
31포크2이슈
중간맛 분석
TypeScript + NestJS 스택의 데코레이터 기반 AOP 구현 도구입니다. 난이도는 중상(3/5)으로, NestJS 모듈·프로바이더·데코레이터의 기본 이해가 필요합니다. 설치 후 즉시 커스텀 데코레이터를 만들어 사용 가능합니다. 공식 예제(캐시 데코레이터)와 테스트 초기화 안내가 있어 실전 적용이 직관적입니다.
이런 레포예요
이럴 때 쓰면 좋아요
- 메서드 결과를 캐싱하여 반복 호출 최적화
- 로깅·성능 측정·권한 검사 같은 횡단 관심사를 메서드 수준에서 관리
핵심 기능
NestJS 의존성 주입과 통합된 커스텀 데코레이터 작성Symbol 기반 메타데이터를 통한 유연한 AOP 적용wrap 메서드로 메서드 실행 전후 로직 삽입
대안 대비 차별점
기존 NestJS 인터셉터나 가드와 달리, 프로바이더 의존성을 직접 받아서 데코레이터 내부에서 사용 가능하며 메서드 래핑을 더 세밀하게 제어할 수 있습니다.
준비물
- NestJS 기본 이해
- TypeScript
- 데코레이터 문법 이해
바로 시작하기
- 라이브러리 설치
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() {
// 로직
}
}
별 추이 · 7일
257+0 / 7일
활용성 · 따라 만들기 좋은가
샘플 점수 20/100
- 관대한 라이선스
- 테스트 있음
- 예제 디렉토리
- 최근 활동
- AGENTS.md
- llms.txt
- 템플릿
⚪ 최근 활동 정보 없음 · 2022년 생성
이 레포에 깃밥 배지 달기
[](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@gitbapAI가 README 기반으로 요약했습니다 · 원문 보기