리플렉션(Reflection)이란?
- 구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수에 접근할 수 있게 해주는 자바 API이다
- 컴파일 도중이 아닌 실행 시간에 동적으로 클래스의 정보를 추출 및 인스턴스를 생성할 수 있다
- 자바에서는 java.lang.reflect 패키지를 통해 리플렉션 API를 제공한다
리플렉션이 사용되는 시기
- 동적으로 클래스를 사용해야 할 때(코드 작성 시점에는 어떤 클래스를 사용해야 하는지 모르지만, 런타임 시점에 클래스를 가져와서 실행해야 하는 경우)
- 예시 : 어노테이션
- @Controller, @Service, @Repository 등의 어노테이션만 클래스 위에 붙이면 BeanFactory가 알아서 인스턴스를 생성하고 주입하여 관리한다
리플렉션을 사용하여 가져올 수 있는 정보들
- Class
- Constructor
- Method
- Field