티스토리 뷰

new study

리플렉션

kkssry 2020. 2. 25. 10:36

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/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
글 보관함