Search

reflection-api

reflection api 정리

{% hint style=“info” %} 인프런 백기선님의 강의 <더 자바, 코드를 조작하는 다양한 방법> 을 수강하면서 공부한 내용을 정리합니다. {% endhint %}
지금까지 reflection api 를 사용하여 바이트코드에 직접 접근하여 수정도 해보고, 외부 컨테이너를 만들어 의존성 주입을 시켜주기도 하였다. 이 모든 것이 reflection api 가 제공되었기에 쉽게 진행할 수 있었다. 그렇다면, 이러한 reflection 은 우리 주변 어디에서 사용되는가?

1. 사용 예시

1-1. 스프링

실습도 했다시피, 의존성 주입시에 컨테이너 내부에서 사용된다.
MVC 뷰에서 넘어온 데이터를 객체에 바인딩 할 때 사용된다.

1-2. Junit

문서를 참고해보자.

1-3. hibernate

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

2. 주의할 점

지나친 사용은 성능을 저하시킬 수 있다. 반드시 필요한 경우에만 사용한다.
컴파일 타임에 확인되지 않은 이슈를 런타임 때에 만들어낼 수 있다.
접근제어자를 무시하고 접근할 수 있다.

3. 참고