목록reflection (2)
개발자는 기록이 답이다

리플렉션 클래스로더를 통해 읽어온 클래스 정보(거울에 "반사"된 정보)를 사용하는 기술 리플렉션을 이용해 클래스를 읽어오거나 인스턴스를 만들거나, 메소드를 실행하거나, 필드의 값을 가져오거나 변경하는 것이 가능 자바는 클래스와 인터페이스의 메타 정보를 Class 객체로 관리한다. 메타 정보 : 패키지 정보, 타입 정보, 멤버(생성자, 필드, 메소드) 정보 등 이러한 메타 정보를 프로그램에서 읽고 수정하는 행위를 리플랙션이라고 한다. 모든 바이트 코드는 클래스라는 객체로 관리된다. 클래스와 인터페이스를 사용하려면 바이트 코드를 메소드 영역에 저장해야 한다. 클래스별로 저장되어 있는 정보를 가지고 클래스라는 타입으로 객체가 만들어진다. 리플랙션을 사용하려면 이러한 클래스 객체(메타정보)부터 얻어야 한다. 리..

이번 포스팅은 나에게 매우 의미있는 부분이다. 면접에서 Java내에서 어노테이션의 작동원리를 제대로 말 못했기 때문이다. Java가 아닌 Spring내에서 어노테이션이 어떻게 작동하는지를 말했다. 면접 3일전에 강의를 보고 어노테이션과 "리플렉션"과의 관계도 알고 있었고 1차 면접에서도 살짝 언급했었는데, 왜 2차 면접 당시 그 순간 생각이 나지 않았을까? 흝어진 조각들을 잘 정리해서 말할 수 있도록 해보자. Java의 어노테이션이란? 어노테이션(Annotation)은 자바 프로그래밍 언어에서 코드에 부가적인 정보(메타데이터)를 부여하기 위한 방법 중 하나이다. 코드에 주석을 다는 것과 달리, 프로그램이 빌드되거나 실행될 때 활용되는 메타데이터를 제공한다. Lombok으로 자주보던 "Getter"와 "R..