애트리뷰트
애트리뷰트(Attribute)는 클래스, 메소드, 필드 등에 붙이는 메타데이터이다. 컴파일된 바이너리에 저장되어 실행 중에 읽을 수 있다.
-
표준 애트리뷰트
[Obsolete]: 더 이상 사용하지 않는 코드임을 경고/에러로 표시한다. -
표준 애트리뷰트
[Conditional]: 특정 조건에서만 메소드가 실행되도록 제어한다. -
표준 애트리뷰트
[Serializable]: 객체를 파일이나 네트워크로 전송 가능한 상태로 표시한다. -
사용자 정의 애트리뷰트: System.Attribute 클래스를 상속받아 개발자가 직접 고유한 정보를 담는 클래스를 설계할 수 있다.
리플렉션 시너지
애트리뷰트는 혼자서는 아무 일도 하지 않는다. 리플렉션 기술을 통해 이 정보를 읽어들일 때 비로소 가치를 발휘한다.
-
GetCustomAttributes: 실행 중에 특정 클래스에 어떤 애트리뷰트가 붙어 있는지 확인하고, 그 안에 담긴 값을 추출한다.
-
동적 처리: 리플렉션을 이용해 특정 애트리뷰트가 붙은 메소드만 골라내어 자동으로 실행하는 등의 구조를 설계한다.
실전 활용 사례
AOP의 기초 활용 사례는 다음과 같다.
-
데이터 유효성 검사: 모델 클래스의 프로퍼티 위에 애트리뷰트를 붙여두고, 저장 직전에 리플렉션으로 이를 검사하는 로직을 공통화한다.
-
JSON/DB 매핑: 외부 데이터와 내부 변수 이름을 연결하는 매퍼 설계의 핵심이다.
-
의존성 주입(DI): 특정 클래스에
[Service]같은 표시를 해두면, 프레임워크가 이를 자동으로 찾아 객체를 생성해준다.