POJO와 XML 기반 AOP

심야·2022년 11월 24일
0

웹 개발

목록 보기
29/46
post-custom-banner

앞서 사용한 AOP는 어노테이션 기반이다. 본 글에서는 POJO와 XML 기반으로 변경하겠다.

어노테이션 기반 AOP

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.JoinPoint;

@Aspect
public class MyAspect {
    // @Before("execution(public void aop002.Boy.runSomething())")
    @Before("execution(* runSomething())")
    public void before(JoinPoint joinpoint){
        System.out.println("얼굴 인식 확인: 문을 개방하라");
        // System.out.println("열쇠로 문을 열고 집에 들어간다.");
    }
}

@ 어노테이션 기반이라 MyAspect.java가 스프링 프레임워크에 종속적이다.

POJO와 XML 기반 AOP

import org.aspectj.lang.JoinPoint;

public class MyAspect {
    public void before(JoinPoint joinpoint){
        System.out.println("얼굴 인식 확인: 문을 개방하라");
        // System.out.println("열쇠로 문을 열고 집에 들어간다.");
    }
}

기존 코드와 비교해 보면 @Aspect 어노테이션과 @Before 어노테이션이 사라졌다. 그래서 MyAspect.java는 스프링 프레임워크에 의존하지 않는 POJO가 된다.

어노테이션 기반 스프링 설정 파일(XML)

<aop:aspectj-autoproxy />

    <bean id="myAspect" class="aop002.MyAspect" />
    <bean id="boy" class="aop002.Boy" />
    <bean id="girl" class="aop002.Girl" />

POJO & XML 기반 스프링 설정 파일 (XML)

<aop:aspectj-autoproxy />
    
    <bean id="myAspect" class="aop003.MyAspect" />
    <bean id="boy" class="aop003.Boy" />
    <bean id="girl" class="aop003.Girl" />
    
    <aop:config>
        <aop:aspect ref="myAspect">
            <aop:before method="before" pointcut="execution(* runSomething())" />
        </aop:aspect>
    </aop:config>

MyAspect.java 에서 사라진 어노테이션들이 POJO & XML 기반 스프링 설정 파일에 태그로 추가되었다.

출처

스프링 입문을 위한 자바 객체지향의 원리와 이해

profile
하루하루 성실하게, 인생 전체는 되는대로.
post-custom-banner

0개의 댓글