Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

ki-sd 님의 블로그

[2026-04-01] 리플렉션(Reflection)과 메타 프로그래밍의 기초 본문

JavaStudy

[2026-04-01] 리플렉션(Reflection)과 메타 프로그래밍의 기초

ki-sd 2026. 4. 17. 21:29

코드가 단순히 실행되는 것을 넘어, 런타임(실행 중)에 자기 자신의 구조를 들여다보고 조작하는 고급 기술인 리플렉션과 어노테이션을 파고들었다.

 

1. 리플렉션(Reflection)의 작동 원리

  • 일반적인 프로그래밍은 컴파일 타임에 어떤 클래스와 메서드를 사용할지 미리 결정하지만, 리플렉션을 사용하면 프로그램 실행 중에 특정 클래스의 이름만 가지고도 그 클래스 내부의 필드, 메서드, 생성자 정보(Class 객체)를 동적으로 추출할 수 있다.
  • 더 나아가, 추출한 정보를 바탕으로 런타임에 동적으로 객체를 생성하고, private으로 캡슐화된 변수에 접근 권한을 우회하여 값을 주입하거나 메서드를 호출하는 강력하지만 위험한 제어 기술을 실습했다.

2. 어노테이션(Annotation)과 프레임워크의 뼈대

  • @Override처럼 단순한 컴파일러 지시어를 넘어, 직접 커스텀 어노테이션을 만들고 타겟(클래스, 메서드)과 유지 정책(Retention Policy)을 설정했다.
  • 리플렉션과 어노테이션을 결합하여, 특정 어노테이션이 붙은 메서드만 찾아내서 실행하는 로직을 구현했다. 이는 Spring이나 JUnit 같은 대규모 프레임워크가 개발자의 코드를 어떻게 자동으로 읽어내어 의존성을 주입(DI)하고 관리하는지 그 내부 작동 원리를 엿볼 수 있는 매우 중요한 메타 프로그래밍의 기초가 되었다.