기본적으로 리플렉션은 거울이라는 뜻을 갖고 있고
간단하게는 객체에 대해 정보가 부족하더라도 객체에 접근할 수 있다.
이는 객체끼리 서로 얕든 깊든 결합성을 갖고있기에 가능한 것인데
이를 이용한다면
private같은 외부접근이 불가능한 경우에도 또는 인스턴스를 하나만 가지게 만든 싱글톤 패턴을 깨버리고
권한을 바꿔가며 객체에 접근할 수 있게 도와준다.
이를 이용한다면 말도 안되는 일들을 벌일 수 있다.
어노테이션은 기본적으로 스프링에서 제공하는 모듈이라고 생각하면 되는데
reflection API를 통해서 메소드, 클래스, 멤버 변수, 파라미터등에 접근하여 이들의 상관관계를 파악하고
얻어낸 상관관계를 바탕으로 답을 얻어내는 기술이다.