You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
스프링 AOP 구현4 - 포인트컷 참조
Pointcuts
orderAndService(): allOrder() 포인트컷와 allService() 포인트컷을 조합해서 새로운 포인트컷을 만들었다.AspectV4Pointcut
스프링 AOP 구현5 - 어드바이스 순서
@Aspect를 별도의 클래스로 분리해야 한다.AspectV5Order
@Aspect에 @order 애노테이션을 통해 실행 순서를 적용했다. 참고로 숫자가 작을 수록 먼저 실행된다.실행
순서
스프링 AOP 구현6 - 어드바이스 종류
어드바이스 종류
@Around: 메서드 호출 전후에 수행, 가장 강력한 어드바이스, 조인 포인트 실행 여부 선택, 반환 값 변환, 예외 변환 등이 가능@Before: 조인 포인트 실행 이전에 실행@AfterReturning: 조인 포인트가 정상 완료후 실행@AfterThrowing: : 메서드가 예외를 던지는 경우 실행@After: 조인 포인트가 정상 또는 예외에 관계없이 실행(finally)AspectV6Advice
참고 정보 획득
JoinPoint 인터페이스의 주요 기능
ProceedingJoinPoint 인터페이스의 주요 기능
어드바이스 종류
**@Before**@Around와 다르게 작업 흐름을 변경할 수 없다.@AroundProceedingJoinPoint.proceed() 를 호출해야 다음 대상이 호출된다. 만약 호출하지 않으면 다음 대상이 호출되지 않는다.@Before는 ProceedingJoinPoint.proceed() 자체를 사용하지 않는다. 메서드 종료시 자동으로 다음 타켓이 호출된다. 물론 예외가 발생하면 다음 코드가 호출되지는 않는다.@AfterReturning@Around와 다르게 반환되는 객체를 변경할 수는 없다. 반환 객체를 변경하려면@Around를 사용해야 한다.**@AfterThrowing****@After****@Around**실행

순서
@Aspect안에서 동일한 조인포인트의 우선순위를 정했다.@Around,@Before,@After,@AfterReturning,@AfterThrowing어드바이스가 적용되는 순서는 이렇게 적용되지만, 호출 순서와 리턴 순서는 반대라는 점을 알아두자.
@Aspect안에 동일한 종류의 어드바이스가 2개 있으면 순서가 보장되지 않는다. 이 경우 앞서 배운 것 처럼@Aspect를 분리하고@Order를 적용하자.@Around외에 다른 어드바이스가 존재하는 이유@Around하나만 있어도 모든 기능을 수행할 수 있다. 그런데 다른 어드바이스들이 존재하는 이유는 무엇일까?@Around는 항상 joinPoint.proceed() 를 호출해야 한다.@Before는 joinPoint.proceed() 를 호출하는 고민을 하지 않아도 된다.@Around가 가장 넓은 기능을 제공하는 것은 맞지만, 실수할 가능성이 있다.@Before,@After같은 어드바이스는 기능은 적지만 실수할 가능성이 낮고, 코드도 단순하다.@Before라는 애노테이션을 보는 순간 아~ 이 코드는 타켓 실행 전에 한정해서 어떤 일을 하는 코드구나 라는 것이 드러난다.좋은 설계는 제약이 있는 것이다.
All reactions