[79일차] Spring - AOP

SOSO·2022년 8월 8일
0

학원

목록 보기
58/59
post-thumbnail

AOP

AOP 란

AOP (Aspect Oriented Programming) 관점지향 프로그래밍

관점지향 프로그래밍은 공통으로 사용하는 기능들을 외부의 독립된 클래스로 분리하고, 해당기능을 프로그램 코드에 직접 명시하지 않고 선언적으로 처리하여 적용하는 것을 말한다.



AOP 용어

Advice : 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의.

Joinpoint : Advice를 적용 가능한 지점을 의미. 메서드 호출,
필드 값 변경 등이 Joinpoint에 해당

Pointcut : Joinpoint의 부분 집합으로서 실제로 Advice가 적용되는 Joinpoint를 나타냄.

Weaving : Advice를 핵심 로직 코드에 적용하는 것을 weaving이라고 함.

Aspect :여러 객체에 공통으로 적용되는 공통 관심 사항

@AOP

XML에 의존성 추가

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

XML 스키마를 이용한 AOP 설정

<!-- Aspect 설정 : Advice를 어떤 Pointcut에 적용할지 설정 -->
<aop:config>
<aop:aspect id="traceAspect1" ref="performanceTraceAdvice">
<aop:pointcut expression="execution(public * com.spring.board..*(..))"
id="publicMethod"/>
<aop:around method="trace" pointcut-ref="publicMethod"/>
</aop:aspect>
</aop:config>
<bean id="writeArticleService" class="com.spring.board.service.WriteArticleServiceImpl">
<constructor-arg>
<ref bean="articleDao"/>
</constructor-arg>
</bean>
<bean id="articleDao" class="com.spring.board.dao.WriteArticleDao"/>

<aop:config> : AOP 설정 정보임을 나타냄
<aop:aspect> : Aspect를 설정함
<aop:pointcut> : Pointcut을 설정함
<aop:around> : Around Advice를 설정함


Advice 정의 관련 태그

종류설명
<aop:before>메서드 실행 전에 적용되는 Advice를 정의한다.
<aop:after-returning>메서드 정상적으로 실행된 후에 적용되는 Advice를 정의한다.
<aop:after-throwing>메서드가 예외를 발생시킬 때 적용되는 Advice를 정의한다.
try-catch블록에서 catch 블록과 비슷하다.
<aop:after>메서드가 적상적으로 실행되느니지 또는 예외를 발생시키는지 여부에 상관없이 적용되는 Advice를 정의한다. try-catch-finally에서 finally 블록과 비슷하다.
<aop:around>메서드 호출 이전, 이후, 예외 발생 등 모든 시점에 적용 가능한 Advice를 정의한다.
profile
한다 열심히

0개의 댓글