reflection api 정리

언제 사용하고, 어디서 사용되는가

인프런 백기선님의 강의 <더 자바, 코드를 조작하는 다양한 방법> 을 수강하면서 공부한 내용을 정리합니다.

지금까지 reflection api 를 사용하여 바이트코드에 직접 접근하여 수정도 해보고, 외부 컨테이너를 만들어 의존성 주입을 시켜주기도 하였다. 이 모든 것이 reflection api 가 제공되었기에 쉽게 진행할 수 있었다. 그렇다면, 이러한 reflection 은 우리 주변 어디에서 사용되는가?

1. 사용 예시

1-1. 스프링

  • 실습도 했다시피, 의존성 주입시에 컨테이너 내부에서 사용된다.

  • MVC 뷰에서 넘어온 데이터를 객체에 바인딩 할 때 사용된다.

1-2. Junit

1-3. hibernate

  • @Entity 클래스에 setter 가 없다면 리플렉션을 사용한다.

2. 주의할 점

  • 지나친 사용은 성능을 저하시킬 수 있다. 반드시 필요한 경우에만 사용한다.

  • 컴파일 타임에 확인되지 않은 이슈를 런타임 때에 만들어낼 수 있다.

  • 접근제어자를 무시하고 접근할 수 있다.

3. 참고

Last updated