🔖 Salesforce Apex 어노테이션 완전 정리
Apex에서 어노테이션은 클래스, 메서드, 변수 등에 특정한 역할이나 실행 조건을 지정해주는 메타정보입니다.
이 글에서는 Salesforce Apex에서 사용할 수 있는 모든 어노테이션을 분류별로 깔끔하게 정리했습니다.
✅ 1. LWC / Aura 통신용
| 어노테이션 | 설명 |
|---|
@AuraEnabled | Apex 메서드나 변수에 Aura 또는 LWC에서 접근 가능하게 함 |
@AuraEnabled(cacheable=true) | 클라이언트 측 캐싱을 허용함 (@wire 방식에서만 사용 가능) |
✅ 2. Flow 통합용
| 어노테이션 | 설명 |
|---|
@InvocableMethod | Flow에서 호출 가능한 Apex 메서드로 선언 |
@InvocableVariable | Flow에서 접근 가능한 변수로 선언 |
✅ 3. 비동기/배치 관련
| 어노테이션 | 설명 |
|---|
@future | 메서드를 비동기 처리 (즉시 반환, 서버에서 나중에 실행됨) |
@Reentrancy | Flow 또는 프로세스에서 재진입 허용을 명시 (동시성 충돌 방지) |
✅ 4. 테스트 전용
| 어노테이션 | 설명 |
|---|
@isTest | 테스트 전용 클래스 또는 메서드로 지정 |
@testSetup | 테스트 실행 전 공통 셋업 데이터를 구성하는 메서드 |
@TestVisible | private 변수나 메서드를 테스트 클래스에서 접근 가능하게 함 |
✅ 5. REST API / Visualforce 연동
| 어노테이션 | 설명 |
|---|
@RemoteAction | Visualforce에서 Apex 메서드를 Ajax로 호출 가능하게 함 |
@RestResource | Apex 클래스를 REST API 엔드포인트로 공개함 |
@HttpGet / @HttpPost / @HttpPatch / @HttpDelete | REST API 메서드에서 HTTP 동작을 매핑함 (@RestResource 내부에서 사용됨) |
✅ 6. 보안 / 성능 제어
| 어노테이션 | 설명 |
|---|
@ReadOnly | 트랜잭션을 읽기 전용으로 제한 (조회 성능 향상, 대용량 조회용) |
@NamespaceAccessible | Managed Package 외부에서도 클래스/메서드 접근 가능하게 설정 |
@Deprecated | 더 이상 사용하지 말아야 할 항목으로 표시 (경고만, 실행은 가능) |
✅ 7. JSON 직렬화
| 어노테이션 | 설명 |
|---|
@JsonAccess | JSON 직렬화/역직렬화 시 특정 변수 포함 여부 지정 (실사용 빈도 낮음) |
✅ 부가적인 메모
| 어노테이션 | 상태 |
|---|
@WithSharing / @WithoutSharing | 공유 설정 제어용 키워드 (@ 없이 사용되지만 어노테이션처럼 보일 수 있음) |
@codeCoverageIgnore | 비공식 테스트 커버리지 제외 표시 (공식 Apex에는 없음) |
✅ 정리 요약
| 분류 | 대표 어노테이션 |
|---|
| LWC 연동 | @AuraEnabled |
| Flow 연동 | @InvocableMethod, @InvocableVariable |
| 비동기 처리 | @future, @Reentrancy |
| 테스트용 | @isTest, @testSetup, @TestVisible |
| API 연동 | @RestResource, @RemoteAction, @Http* |
| 성능/보안 | @ReadOnly, @NamespaceAccessible, @Deprecated |
✨ 마무리
Salesforce Apex에서 어노테이션은 단순히 코드의 부가기능이 아닌, 플랫폼과 완벽하게 통합되도록 돕는 핵심 요소입니다.
LWC, Flow, Visualforce, REST API 등 Salesforce의 다양한 계층과 연결되는 만큼, 각각의 어노테이션 목적을 명확히 이해해두면 훨씬 강력한 Apex 개발자가 될 수 있습니다.