리플렉션(Reflection)은 실행 시간(runtime)에 클래스, 메서드, 필드 등의 정보를 동적으로 분석하고 조작할 수 있는 기능을 의미한다.즉, 컴파일 시점이 아니라 실행 중에 클래스 정보를 가져와서 메서드를 호출하거나 필드를 수정할 수 있다. 1. 리플렉션이 필요한 이유 1) 컴파일 시점에 어떤 클래스나 메서드를 사용할지 모를 때→ 예를 들어, 플러그인 시스템에서 사용자가 추가한 클래스들을 동적으로 로드해야 할 때 2) 어노테이션(애너테이션) 기반 프레임워크→ @Autowired, @Component 같은 Spring 애너테이션을 처리할 때 3) JSON 직렬화/역직렬화→ @JsonSerializable 애너테이션이 붙은 클래스만 JSON 변환하는 기능 만들기 2. 리플렉션을 활용한 예..