High Level Programming Language/Reflection(18)
-
Lesson: Members[Constructors]
[튜토리얼] Constructors 생성자는 클래스의 인스턴스인 객체를 생성할 때 사용됩니다. 일반적으로 메서드가 호출되거나 필드에 접근되기 전에 클래스 초기화에 필요한 작업을 수행합니다. 생성자는 절대 상속되지 않습니다.메서드와 유사하게, 리플렉션은 클래스의 생성자를 발견하고 검색하며, 제어자, 파라미터, 애노테이션, 던지는 예외와 같은 선언 정보를 얻기 위한 API를 제공합니다. 또한 지정된 생성자를 사용하여 클래스의 새 인스턴스를 생성할 수도 있습니다. 생성자를 다룰 때 사용하는 주요 클래스는 Class 와 java.lang.reflect.Constructor 입니다. 생성자와 관련된 일반적인 작업은 다음 섹션에서 다룹니다: Finding Constructors 특정 파라미터를 가진 생성자를 검색하..
2024.07.06 -
Lesson: Members[Methods]
[튜토리얼] Methods메서드에는 호출될 수 있는 실행 가능한 코드가 들어 있습니다. 메서드는 상속되고 넌-리플렉티브한 코드에서는 오버로딩, 오버라이딩, 하이딩[hiding]과 같은 동작이 컴파일러에 의해 적용됩니다. 반면, 리플렉티브한 코드는 슈퍼클래스를 고려하지 않고도 메서드 선택을 특정 클래스로 제한할 수 있습니다. 슈퍼클래스 메서드에 액세스할 수 있지만 메서드를 선언한 클래스를 확인할 수 있습니다. 이는 리플렉션 없이는 프로그래밍 방식으로 발견하는 것이 불가능하며 많은 미묘한 버그의 원인입니다.sub class가 super class의 static 메서드 또는 필드를 동일한 이름으로 다시 정의할 경우,이것은 오버라이딩(overriding)이 아니라 hiding(숨김)으로 처리됩니다.⚠️ 오버라이..
2024.07.06 -
Lesson: Members[Fields]
Fields필드는 값과 연관된 클래스, 인터페이스 또는 열거형입니다. java.lang.reflect.Field 클래스의 메서드는 필드에 대한 정보(예: 이름, 타입, 제어자 및 어노테이션)를 검색할 수 있습니다. ( Classes 레슨의 " Examining Class Modifiers and Types " 섹션에서는 어노테이션을 검색하는 방법을 설명합니다.) 또한 필드의 값을 동적으로 접근하고 수정할 수 있는 메서드도 있습니다. 이러한 작업은 다음 섹션에서 다룹니다:Obtaining Field Types 에서는 필드의 선언된 타입과 제네릭 타입을 얻는 방법을 설명합니다. Retrieving and Parsing Field Modifiers 에서는 public이나 transient와 같은 필드 선언의 ..
2024.07.06 -
Lesson: Classes
리플렉션이란, 자바와 같은 프로그래밍 언어에서 프로그램이 런타임 시점에 자기 자신을 검사하고 수정할 수 있는 기능을 말합니다. 리플렉션을 통해 클래스, 메서드, 필드 등의 구조적 요소에 대한 정보를 동적으로 탐색하고 조작할 수 있습니다. 즉, 프로그램이 자신의 코드에 대한 메타데이터를 읽고, 이 메타데이터를 바탕으로 실행 시 동적으로 행동을 바꿀 수 있게 해줍니다. 자바에서 리플렉션은 주로 java.lang.reflect 패키지에 포함된 클래스를 사용하여 구현됩니다. 이 패키지에는 Class, Method, Field, Constructor 등의 클래스가 포함되어 있으며, 이를 통해 클래스의 구조를 조사하거나 메서드를 호출하는 등의 작업을 할 수 있습니다.리플렉션의 주요 특징 및 기능:1. 클래스 및 객..
2024.05.27 -
CGLib MethodInterceptor
🧠 CGLIB MethodInterceptor 완벽 정복런타임 메서드 제어의 진심, 인터셉터의 모든 것 ✅ 들어가며Spring AOP, 프록시 패턴, 동적 코드 삽입을 논할 때 CGLIB은 자주 언급되는 핵심 라이브러리입니다. 그 중심에 있는 인터페이스가 바로 net.sf.cglib.proxy.MethodInterceptor입니다.이 글에서는 MethodInterceptor의 구조와 역할, 그리고 내부 동작 원리를 바이트코드 수준까지 파고들어 설명합니다.📌 정의: MethodInterceptor란?@FunctionalInterfacepublic interface MethodInterceptor extends Callback { Object intercept(Object obj, Method me..
2023.06.20 -
CGLIB Enhancer
🧠 CGLIB Enhancer 완전 정복: 동적 프록시를 생성하는 마법의 클래스📌 들어가며Spring AOP 또는 고급 프록시 프레임워크에서 흔히 등장하는 net.sf.cglib.proxy.Enhancer.이 클래스는 런타임에 기존 클래스(프록시 패턴에서의 타겟 클래스[Target Class])를 확장(상속)하여 새로운 프록시 클래스를 생성하는 핵심 클래스입니다.본 글에서는 CGLIB의 Enhancer가 어떤 역할을 하는지, 내부적으로 어떻게 동작하는지, 그리고 실무에서 어떻게 사용되는지를 심층적으로 분석해보겠습니다. ✅ 기본 역할: 클래스를 "향상(Enhance)" 시킨다Enhancer는 CGLIB에서 프록시 객체를 만들기 위한 중앙 클래스입니다. 📘 정의: Enhancer는 런타임에 특정 클래스..
2023.05.19