새로운 프로젝트를 만들고 LIB 폴더를 만들어 라이브러리 클래스를 설정합니다.(이전 글 참고) 그리고 AOP 설정 파일인 AOPTest.xml를 src패키지에 생성합니다.
AOP를 설정하는 AOPTest.xml을 다음과 같이 작성합니다. <bean> 태그를 이용해 타깃 빈과 어드바이스 빈을 생성한 후 스프링의 ProxyFactoryBean 클래스 빈 생성 시 <property>태그를 이용해 타깃 빈과 어드바이스 빈을 엮어 줍니다. 그리고 사용할 어드바이스가 여러개이면 <value> 태그로 추가하면 됩니다.
이번에는 타깃 클래스인 Calculator 클래스를 작성합니다.
어드바이스 클래스인 LoggingAdvice를 다음과 같이 작성합니다. 먼저 인터페이스 MethodInterceptor를 구현하고 invocation.proceed() 메서드를 기준으로 메서드 호출 전과 후 를 분리하여 로그 메시지를 출력합니다. proceed() 메서드 호출 전 구문은 타깃 메서드 호출 전에 실행하는 기능이고, 호출 후 구문은 타깃 메서드 호출 후에 실행하는 기능입니다.
실행 클래스인 CalcTest를 다음과 같이 작성합니다. AOPTest.xml을 읽어 들여 빈을 생성한 후 타깃 클래스의 메서드를 호출하면 결과 출력 전후에 어드바이스에서 설정한 로그가 출력됩니다.
main() 메서드가 있는 실행 클래스(CalcTest.java)가 보이는 상태에서 실행 버튼을 클릭해 실행합니다.
지금 실습한 AOP기능은 타깃 클래스인 Calculator의 모든 메서드에 적용됩니다. 실제 스프링에서는 특정 패키지 이름이나 특정 클래스 이름 또는 특정 메서드 이름에만 AOP기능을 적용할 수도 있습니다.
이런 세부 기능은 다른 기능을 학습하면서 조금씩 적용해 보기로 하겠습니다. 지금은 AOP의 개념을 확실히 이해해 두기 바랍니다.
'2020 > SPRING' 카테고리의 다른 글
SimpleUrlController 이용해 스프링 MVC 실습하기 (0) | 2020.01.08 |
---|---|
스프링 프레임워크 MVC 특징 (0) | 2020.01.08 |
스프링 API를 이용한 AOP 기능 구현 과정 (0) | 2020.01.07 |
Spring AOP기능 (0) | 2020.01.07 |
회원 기능 이용해 DI 실습 (0) | 2020.01.07 |