분류 전체보기290 Java Instrument API vs ASM(Abstract Syntax Manipulation) Java Instrumentation API와 ASM은 모두 Java 바이트코드 조작을 가능하게 하는 도구이지만, 그 목적과 사용 방식이 다릅니다. 이 둘은 서로 보완적으로 사용될 수 있으며, Instrumentation API는 ASM과 같은 라이브러리와 함께 사용되어 바이트코드를 런타임에 조작할 수 있습니다.Java Instrumentation API주요 목적: Instrumentation API는 Java 애플리케이션에서 런타임 시 클래스의 바이트코드를 조작할 수 있는 기능을 제공합니다. 주로 Java Agent를 통해 사용되며, JVM에서 클래스가 로드되기 전이나 이미 로드된 후에 바이트코드를 수정할 수 있습니다.역할:Instrumentation API는 클래스 로딩 과정에 개입할 수 있는 메커니.. 2024. 9. 3. 2024.09.03(화) { 원자성, 바인딩, 모듈, perthis, 자바 에이전트 } 원자성(Atomicity) Java에서 원자성(Atomicity)은 멀티스레딩 환경에서 여러 스레드가 동시에 공유 자원에 접근할 때 데이터 일관성을 보장하는 중요한 개념입니다. 원자성 있는 연산은 분할될 수 없는 작업으로, 다른 스레드가 그 연산이 완료되기 전까지 중간 상태를 볼 수 없도록 보장합니다. Atomic 클래스 Java에서는 java.util.concurrent.atomic 패키지에서 원자성 있는 연산을 지원하는 다양한 클래스를 제공합니다. 이 클래스들은 내부적으로 CAS(Compare-And-Swap) 같은 저수준 동기화 기법을 사용하여, 안전한 멀티스레딩을 지원합니다.주요 Atomic 클래스:AtomicInteger: 원자적 int 연산을 제공합니다.AtomicLong: 원자적 long 연.. 2024. 9. 3. 2024.09.02(월) { 인라인 포인트컷, args(제한&가져오기), 인라인(Inlining) 포인트컷 인라인 포인트컷은 포인트컷 표현식을 직접 어드바이스 정의에 포함하는 방식입니다. 인라인으로 정의하면, 별도의 포인트컷 메서드를 만들지 않고 어드바이스와 함께 포인트컷을 정의할 수 있습니다.import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;@Aspectpublic class LoggingAspect { // 인라인 포인트컷을 사용한 Before 어드바이스 @Before("execution(* com.example.service.*.*(..))") public void logBeforeMethod() { System.out.println("Meth.. 2024. 9. 2. 2024.08.30(금) { PCD-this와target차이, proceed() } this와 target은 AspectJ에서 사용되는 PCD(Pointcut Designator)로, 둘 다 특정 객체와 관련된 조인 포인트를 지정하지만, 이 둘은 중요한 차이가 있습니다. 두 가지를 혼용하지 않도록 주의해야 합니다.1. this PCD정의: this PCD는 현재 실행 중인 객체가 특정 타입을 구현하는지를 검사합니다. 이때 this는 프록시(proxy) 객체를 대상으로 합니다. 주로 스프링 AOP와 같은 프록시 기반 AOP 프레임워크에서 사용됩니다.사용 예시:pointcut myPointcut() : this(com.example.MyInterface);위 예시는 조인 포인트가 현재 com.example.MyInterface 타입의 객체에서 실행되고 있는지를 확인합니다.즉, 프록시 객체가.. 2024. 8. 30. 2024.08.29(목) { 위임 한다는것, AspectJ의 아규먼트&파라미터, PCD, 디지그네이터 } 위임을 한다는 것 = 타겟클래스객체를 사용한다는 것 위임(delegation)은 객체지향 프로그래밍에서 자주 사용되는 설계 기법으로, 특정 작업이나 책임을 다른 객체(일반적으로 "타겟 클래스" 객체)에 위임하는 것을 의미합니다. 위임을 사용하면 클래스의 책임을 분산시켜 코드의 재사용성을 높이고, 결합도를 낮출 수 있습니다. 위임의 개념위임(Delegation): 한 객체가 자신의 작업 중 일부를 다른 객체(타겟 클래스)에게 위임하는 것입니다. 즉, 클라이언트 요청을 직접 처리하지 않고, 요청을 타겟 클래스의 객체에게 전달하여 해당 작업을 수행하도록 합니다.타겟 클래스: 위임을 받은 객체입니다. 위임을 수행하는 클래스는 이 타겟 클래스의 객체를 사용하여 실제 작업을 수행합니다.위임의 예시아래는 간단한 위.. 2024. 8. 29. Mixin Pattern (자바에선 다중상속 허용X -> 믹스인디자인패턴으로 흉내) 믹스인(Mixin) 디자인 패턴은 여러 클래스로부터 코드를 재사용할 수 있도록 하는 패턴으로, 클래스가 여러 다른 클래스로부터 기능을 "혼합"할 수 있게 해줍니다. 이 패턴은 다중 상속의 일부 개념을 차용하되, 일반적인 상속보다는 더 유연하고, 주로 인터페이스와 조합하여 사용됩니다. 믹스인 패턴의 특징재사용성: 공통 기능을 여러 클래스에 쉽게 재사용할 수 있습니다.유연성: 상속 계층 구조와는 독립적으로 기능을 추가할 수 있습니다. 즉, 특정 기능을 추가하기 위해 클래스를 상속할 필요가 없습니다.다중 상속의 대안: 자바는 다중 상속을 지원하지 않지만, 믹스인 패턴을 사용하면 다중 상속과 유사한 효과를 얻을 수 있습니다. 믹스인 패턴의 활용 방법 자바에서는 믹스인 패턴을 인터페이스와 디폴트 메서드 또는 조합.. 2024. 8. 28. 이전 1 ··· 22 23 24 25 26 27 28 ··· 49 다음