티스토리 뷰
Java Reflection API란?
- 컴파일한 클래스 정보를 활용해 동적으로 프로그래밍이 가능하도록 지원하는 API
- 리플렉션이란 런타임 상황에서 메모리에 올라간 클래스 정보를 찾아 상태값 혹은 메서드를 실행하는 등 조작하는 행위
- 프레임워크에서 유연한 동작을 위해 자주 사용.
리플렉션 사용이유
- @Autowired, @Resource 같이 의존성을 주입하는 어노테이션에서 사용
- Spring이 DI를 해줄 때의 장점으로 이어진다고 생각 합니다. 즉, 의존성을 낮춰 유연한 코드를 만들어 준다고 생각합니다.
- Spring에서 Bean을 IoC Container에서 생성하고 등록할 때 Bean으로 등록할 클래스를 찾기 위해 Method Area에서 어노테이션이 붙은 클래스를 찾아 생성하고 등록한다.
Java Reflection 주요 API
java.lang.Class
- String getName() : 패키지 + 클래스 이름을 반환한다.
- int getModifiers() : 클래스의 접근 제어자를 숫자로 반환한다.
- Field[] getFields() : 접근 가능한 public 필드 목록을 반환한다.
- Field[] getDeclaredFields() : 모든 필드 목록을 반환한다.
- Constructor[] getConstructors() : 접근 가능한 public 생성자 목록을 반환한다.
- Constructor[] getDeclaredConstructors() : 모든 생성자 목록을 반환한다.
- Method[] getMethods() : 부모 클래스, 자신 클래스의 접근 가능한 public 메서드 목록을 반환한다.
- Method[] getDeclaredMethods() : 모든 메서드 목록을 반환한다.
java.lang.refelct.Constructor
- String getName() : 생성자 이름을 반환한다.
- int getModifiers() : 생성자의 접근 제어자를 숫자로 반환한다.
- Class[] getParameterTypes() : 생성자 패러미터의 데이터 타입을 반환한다.
java.lang.refelct.Field
- String getName() : 필드 이름을 반환한다.
- int getModifiers() : 필드의 접근 제어자를 숫자로 반환한다.
java.lang.refelct.Method
- String getName() : 메서드 이름을 반환한다.
- int getModifiers() : 메서드의 접근 제어자를 숫자로 반환한다.
- Class[] getParameterTypes() : 메서드 패러미터의 데이터 타입을 반환한다.
'new study' 카테고리의 다른 글
템플릿 콜백 패턴 (0) | 2020.02.17 |
---|---|
PROCESS vs THREAD (0) | 2019.06.30 |
COOKIE vs SESSION (0) | 2019.06.24 |
replace vs replaceAll (0) | 2019.06.21 |
GET vs POST (0) | 2019.06.20 |
댓글