728x90
AOP란?
AOP(Aspect Oriented Programming)는 직역하면 "관점지향 프로그래밍"이다.
한 마디로 정의하자면 AOP는 흩어진 코드를 한 곳으로 모으는 코딩 기법.
어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다.
AOP를 사용하면 공통 관심 사항과 핵심 관심 사항을 분리하여 로직을 구현 할 수 있다. (공통 관심 사항을 AOP로 구현)
-AOP 사용 장점
- 핵심 관심 사항과 공통 관심 사항 분리 가능
- 핵심 관심 사항을 깔끔하게 유지 가능
- 공통 관심 사항 로직 변경 용이
- 원하는 적용 대상 선택 가능
EX) AOP 등록 예시코드 - TimeTraceAop.java
@Aspect
@Component
public class TimeTraceAop {
// 공통관심사항 적용 할 타겟 지정
@Around("execution(* hello.hellospring..*(..))")
public Object excute(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
System.out.println("START :" + joinPoint.toString());
try{
return joinPoint.proceed();
}finally {
long finish = System.currentTimeMillis();
long timeMs = finish -start;
System.out.println("END : " + joinPoint.toString() + " " + timeMs + "ms");
}
}
}
위 코드는 각 메소드마다 실행 시간을 구하고자 할 때 사용하는 코드이다. 각 클래스의 메서드마다 위 코드를 작성하면 코드 중복 + 복잡한 구조 + 코드수정의 번거로움으로 코드가 더러워진다. 이렇게 공통적인 부분을 따로 구현하여 aop로 빼낸다면 훨씬 더 깔끔하게 코드를 작성하고 코드를 수정하기에도 효율적이다.
@Around 어노테이션 옆에 aop를 적용 할 타겟 지정이 가능하다. 위 예시 코드의 경우 hello.hellospring 하위 아래 모든 클래스에 aop를 적용한다는 의미이다.
*참조
1.스프링 프레임워크 입문 (인프런) - 백기선
2.스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB접근 기술 (인프런) - 김영한
3.https://engkimbs.tistory.com/746 [새로비]
728x90
'스터디 > Spring' 카테고리의 다른 글
[Spring] 싱글톤 패턴 (Singleton pattern) (0) | 2021.08.17 |
---|---|
[Spring] Spring Container, BeanFactory 그리고 ApplicationContext (0) | 2021.08.17 |
[Spring] PSA (Portable Service Abstraction) 란? (0) | 2021.07.04 |
[Spring] IoC와 DI (0) | 2021.07.04 |
Spring vs SpringBoot (0) | 2021.06.27 |
댓글