ki-sd 님의 블로그
[2026-04-01] 리플렉션(Reflection)과 메타 프로그래밍의 기초 본문
코드가 단순히 실행되는 것을 넘어, 런타임(실행 중)에 자기 자신의 구조를 들여다보고 조작하는 고급 기술인 리플렉션과 어노테이션을 파고들었다.
1. 리플렉션(Reflection)의 작동 원리
- 일반적인 프로그래밍은 컴파일 타임에 어떤 클래스와 메서드를 사용할지 미리 결정하지만, 리플렉션을 사용하면 프로그램 실행 중에 특정 클래스의 이름만 가지고도 그 클래스 내부의 필드, 메서드, 생성자 정보(Class 객체)를 동적으로 추출할 수 있다.
- 더 나아가, 추출한 정보를 바탕으로 런타임에 동적으로 객체를 생성하고, private으로 캡슐화된 변수에 접근 권한을 우회하여 값을 주입하거나 메서드를 호출하는 강력하지만 위험한 제어 기술을 실습했다.
2. 어노테이션(Annotation)과 프레임워크의 뼈대
- @Override처럼 단순한 컴파일러 지시어를 넘어, 직접 커스텀 어노테이션을 만들고 타겟(클래스, 메서드)과 유지 정책(Retention Policy)을 설정했다.
- 리플렉션과 어노테이션을 결합하여, 특정 어노테이션이 붙은 메서드만 찾아내서 실행하는 로직을 구현했다. 이는 Spring이나 JUnit 같은 대규모 프레임워크가 개발자의 코드를 어떻게 자동으로 읽어내어 의존성을 주입(DI)하고 관리하는지 그 내부 작동 원리를 엿볼 수 있는 매우 중요한 메타 프로그래밍의 기초가 되었다.
'JavaStudy' 카테고리의 다른 글
| [2026-04-03] Set과 Map의 논리적 구조와 중복 제어 (0) | 2026.04.17 |
|---|---|
| [2026-04-02] 가변 크기 배열 ArrayList와 제네릭(Generics)의 안정성 (0) | 2026.04.17 |
| [2026-03-31] Wrapper 클래스와 시간 API 처리에 대한 고찰 (0) | 2026.04.17 |
| [2026-03-30] java.lang 패키지 분석과 데이터 영속성(Persistence)의 경험 (1) | 2026.04.17 |
| [2026-03-27] try-with-resources와 사용자 정의 예외(Custom Exception) (0) | 2026.04.17 |
