본문 바로가기

Everyday Study62

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.
2024.08.28(수) { Aspect 적용 시점, 메서드 매처(Method Matcher)와 클래스 필터 } 애스펙트(Aspect)를 적용해야 할 시점 애스펙트(Aspect)를 적용해야 할 시점은 코드에서 반복적으로 발생하는 횡단 관심사(Cross-Cutting Concerns)를 처리하고자 할 때입니다. 횡단 관심사란 여러 모듈이나 클래스에서 공통적으로 필요하지만, 핵심 비즈니스 로직과는 직접적으로 관련이 없는 기능들을 의미합니다. 이러한 관심사를 적절히 분리하고 관리하기 위해 애스펙트 지향 프로그래밍(AOP)을 사용합니다.  애스펙트를 적용해야 할 주요 시점 로깅(Logging)상황: 애플리케이션의 여러 부분에서 로그를 기록하는 코드가 필요할 때.적용 이유: 로깅 코드를 각 클래스에 반복해서 작성하지 않고, 애스펙트로 분리하여 관리할 수 있습니다. 이는 코드의 중복을 줄이고, 로깅 로직을 중앙에서 관리할 수.. 2024. 8. 28.
2024.08.27(화) { 포인트컷 익스프레션, 정적&동적 매칭, @Qualifier, @CustomAnnotation } 정적매칭 - 메서드 오버로딩: 정적 매칭의 대표적인 예는 메서드 오버로딩입니다. 컴파일러는 동일한 이름의 메서드가 여러 개 존재할 때, 매개변수의 타입과 개수에 따라 호출할 메서드를 컴파일 시점에 결정합니다. 동적매칭 - 메서드 오버라이딩: 런타임 매칭의 대표적인 예는 메서드 오버라이딩입니다. 자바에서 다형성(polymorphism)을 이용해 부모 클래스의 참조 변수를 통해 자식 클래스의 메서드를 호출하는 경우, 실제 호출되는 메서드는 런타임에 결정됩니다.@Qualifier : Spring Framework에서 주로 사용되는 애노테이션으로, 의존성 주입(Dependency Injection) 과정에서 같은 타입의 빈(Bean)이 여러 개 있을 때, 특정한 빈을 명시적으로 선택할 수 있게 해줍니다. Spr.. 2024. 8. 27.
2024.08.26(월) { 조인 포인트, 어드바이스, 포인트컷, 어드바이저 } 조인 포인트 (Join Point)애플리케이션의 실행 흐름에서의 AOP를 적용할 수 있는 모든 특정 지점스프링 컨테이너가 관리할 수 있는 스프링 빈에만 AOP 적용 가능항상 메서드 레벨에만 AOP 적용 가능( 스프링 AOP가 프록시 방식 사용하기 때문 )어드바이스 (Advice)특정 조인포인트(Join Point)에서 수행될 부가기능을 정리한 코드핵심 코드(Target)에 Aspect를 언제 적용할지 정의 포인트컷 (Pointcut)조인포인트(Join Point)에서 어드바이스(Advice)가 적용될 위치를 선별하는 기능( 애플리케이션 실행 흐름에서 AOP를 적용할 수 있는 모든 포인트에서 수행될 부가기능 코드의 위치를 선별하는 기능 )관심 조인포인트를 결정 ➜ 어드바이스가 실행되는 시기 제어 가능어드바.. 2024. 8. 26.